Crie e provisione o IoT Edge para Linux em dispositivos Windows em escala usando certificados X.509
Aplica-se a: IoT Edge 1.4
Importante
O Azure IoT Edge 1.5 LTS e o IoT Edge 1.4 são versões suportadas. O IoT Edge 1.4 LTS está chegando ao fim do serviço em 12 de novembro de 2024. Se tiver uma versão anterior, veja Atualizar o IoT Edge.
Este artigo fornece instruções completas para o provisionamento automático de um ou mais IoT Edge para Linux em dispositivos Windows usando certificados X.509. Você pode provisionar automaticamente dispositivos do Azure IoT Edge com o serviço de provisionamento de dispositivo (DPS) do Hub IoT do Azure. Se você não estiver familiarizado com o processo de provisionamento automático, revise a visão geral do provisionamento antes de continuar.
As tarefas são as seguintes:
- Gere certificados e chaves.
- Crie um registro individual para um único dispositivo ou um registro de grupo para um conjunto de dispositivos.
- Implante uma máquina virtual Linux com o tempo de execução do IoT Edge instalado e conecte-a ao Hub IoT.
Usar certificados X.509 como um mecanismo de atestado é uma excelente maneira de dimensionar a produção e simplificar o provisionamento de dispositivos. Normalmente, os certificados X.509 são organizados em uma cadeia de confiança de certificados. Começando com um certificado raiz autoassinado ou confiável, cada certificado na cadeia assina o próximo certificado inferior. Esse padrão cria uma cadeia delegada de confiança do certificado raiz até o certificado de dispositivo downstream final instalado em um dispositivo.
Pré-requisitos
Recursos na nuvem
- Um hub IoT ativo
- Uma instância do serviço de provisionamento de dispositivo do Hub IoT no Azure, vinculada ao seu hub IoT
- Se você não tiver uma instância de serviço de provisionamento de dispositivo, poderá seguir as instruções nas seções Criar um novo serviço de provisionamento de dispositivo do Hub IoT e Vincular o hub IoT e o serviço de provisionamento de dispositivo do início rápido do serviço de provisionamento de dispositivos do Hub IoT.
- Depois de executar o serviço de provisionamento de dispositivo, copie o valor de ID Scope da página de visão geral. Você usa esse valor ao configurar o tempo de execução do IoT Edge.
Requisitos do dispositivo
Um dispositivo Windows com os seguintes requisitos mínimos:
Requisitos de Sistema
- Windows 101/11 (Pro, Enterprise, IoT Enterprise)
- Windows Server 20191/2022
1 Windows 10 e Windows Server 2019 compilação mínima 17763 com todas as atualizações cumulativas atuais instaladas.
Requisitos de Hardware
- Memória livre mínima: 1 GB
- Espaço livre mínimo em disco: 10 GB
Suporte à virtualização
- No Windows 10, habilite o Hyper-V. Para obter mais informações, consulte Instalar o Hyper-V no Windows 10.
- No Windows Server, instale a função Hyper-V e crie um comutador de rede padrão. Para obter mais informações, consulte Virtualização aninhada para Azure IoT Edge para Linux no Windows.
- Em uma máquina virtual, configure a virtualização aninhada. Para obter mais informações, consulte Virtualização aninhada.
Suporte em rede
- O Windows Server não vem com uma opção padrão. Antes de implantar o EFLOW em um dispositivo Windows Server, você precisa criar um comutador virtual. Para obter mais informações, consulte Criar comutador virtual para Linux no Windows.
- As versões da área de trabalho do Windows vêm com uma opção padrão que pode ser usada para a instalação do EFLOW. Se necessário, você pode criar seu próprio comutador virtual personalizado.
Gorjeta
Se você quiser usar módulos Linux acelerados por GPU em sua implantação do Azure IoT Edge para Linux no Windows, há várias opções de configuração a serem consideradas.
Você precisará instalar os drivers corretos, dependendo da arquitetura da GPU, e talvez precise acessar uma compilação do Programa Windows Insider. Para determinar suas necessidades de configuração e satisfazer esses pré-requisitos, consulte Aceleração de GPU para Azure IoT Edge para Linux no Windows.
Certifique-se de dedicar um tempo para satisfazer os pré-requisitos para a aceleração da GPU agora. Você precisará reiniciar o processo de instalação se decidir que deseja a aceleração da GPU durante a instalação.
Ferramentas de programação
Prepare seu dispositivo de destino para a instalação do Azure IoT Edge para Linux no Windows e a implantação da máquina virtual Linux:
Defina a política de execução no dispositivo de destino como
AllSigned
. Você pode verificar a política de execução atual em um prompt do PowerShell com privilégios elevados usando o seguinte comando:Get-ExecutionPolicy -List
Se a política de execução do não
AllSigned
for , você poderá definir a política delocal machine
execução usando:Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
Para obter mais informações sobre o módulo Azure IoT Edge para Linux no Windows PowerShell, consulte a referência de funções do PowerShell.
Gerar certificados de identidade de dispositivo
O certificado de identidade do dispositivo é um certificado downstream que se conecta por meio de uma cadeia de confiança de certificados ao certificado de autoridade de certificação (CA) X.509 superior. O certificado de identidade do dispositivo deve ter seu nome comum (CN) definido como a ID do dispositivo que você deseja que o dispositivo tenha em seu hub IoT.
Os certificados de identidade de dispositivo são usados apenas para provisionar o dispositivo IoT Edge e autenticar o dispositivo com o Hub IoT do Azure. Eles não estão assinando certificados, ao contrário dos certificados de CA que o dispositivo IoT Edge apresenta aos módulos ou dispositivos downstream para verificação. Para obter mais informações, consulte Detalhes de uso do certificado do Azure IoT Edge.
Depois de criar o certificado de identidade do dispositivo, você deve ter dois arquivos: um arquivo .cer ou .pem que contém a parte pública do certificado e um arquivo .cer ou .pem com a chave privada do certificado. Se você planeja usar o registro de grupo no DPS, também precisará da parte pública de um certificado de CA intermediário ou raiz na mesma cadeia de confiança de certificados.
Você precisa dos seguintes arquivos para configurar o provisionamento automático com X.509:
- O certificado de identidade do dispositivo e seu certificado de chave privada. O certificado de identidade do dispositivo é carregado no DPS se você criar um registro individual. A chave privada é passada para o tempo de execução do IoT Edge.
- Um certificado de cadeia completa, que deve conter, pelo menos, a identidade do dispositivo e os certificados intermédios. O certificado de cadeia completa é passado para o tempo de execução do IoT Edge.
- Um certificado de autoridade de certificação intermediário ou raiz da cadeia de confiança de certificados. Este certificado é carregado no DPS se você criar um registro de grupo.
Nota
Atualmente, uma limitação no libiothsm impede o uso de certificados que expiram em ou após 1º de janeiro de 2038.
Usar certificados de teste (opcional)
Se você não tiver uma autoridade de certificação disponível para criar novos certificados de identidade e quiser experimentar esse cenário, o repositório git do Azure IoT Edge contém scripts que você pode usar para gerar certificados de teste. Esses certificados são projetados apenas para testes de desenvolvimento e não devem ser usados na produção.
Para criar certificados de teste, siga as etapas em Criar certificados de demonstração para testar os recursos do dispositivo IoT Edge. Conclua as duas seções necessárias para configurar os scripts de geração de certificado e criar um certificado de autoridade de certificação raiz. Em seguida, siga as etapas para criar um certificado de identidade de dispositivo. Quando terminar, você deverá ter a seguinte cadeia de certificados e par de chaves:
<WRKDIR>\certs\iot-edge-device-identity-<name>-full-chain.cert.pem
<WRKDIR>\private\iot-edge-device-identity-<name>.key.pem
Você precisa desses dois certificados no dispositivo IoT Edge. Se você vai usar o registro individual no DPS, então você carrega o arquivo .cert.pem. Se você vai usar o registro de grupo no DPS, também precisará de um certificado de CA intermediário ou raiz na mesma cadeia de confiança de certificados para carregar. Se você estiver usando certificados de demonstração, use o <WRKDIR>\certs\azure-iot-test-only.root.ca.cert.pem
certificado para inscrição em grupo.
Criar um registro DPS
Use seus certificados e chaves gerados para criar um registro no DPS para um ou mais dispositivos IoT Edge.
Se você deseja provisionar um único dispositivo IoT Edge, crie um registro individual. Se você precisar de vários dispositivos provisionados, siga as etapas para criar um registro de grupo DPS.
Ao criar um registro no DPS, você tem a oportunidade de declarar um Estado Gêmeo Inicial do Dispositivo. No gêmeo de dispositivo, você pode definir tags para agrupar dispositivos por qualquer métrica necessária em sua solução, como região, ambiente, local ou tipo de dispositivo. Essas tags são usadas para criar implantações automáticas.
Para obter mais informações sobre inscrições no serviço de provisionamento de dispositivos, consulte Como gerenciar registros de dispositivos.
Criar uma inscrição individual do DPS
As inscrições individuais tomam a parte pública do certificado de identidade de um dispositivo e fazem a correspondência com o certificado no dispositivo.
Gorjeta
As etapas neste artigo são para o portal do Azure, mas você também pode criar inscrições individuais usando a CLI do Azure. Para obter mais informações, consulte az iot dps enrollment. Como parte do comando CLI, use o sinalizador habilitado para borda para especificar que o registro é para um dispositivo IoT Edge.
No portal do Azure, navegue até sua instância do serviço de provisionamento de dispositivo do Hub IoT.
Em Configurações, selecione Gerenciar inscrições.
Selecione Adicionar inscrição individual e conclua as seguintes etapas para configurar o registro:
Mecanismo: Selecione X.509.
Arquivo .pem ou .cer do certificado primário: carregue o arquivo público do certificado de identidade do dispositivo. Se você usou os scripts para gerar um certificado de teste, escolha o seguinte arquivo:
<WRKDIR>\certs\iot-edge-device-identity-<name>.cert.pem
ID do dispositivo do Hub IoT: forneça uma ID para o seu dispositivo, se desejar. Você pode usar IDs de dispositivo para direcionar um dispositivo individual para implantação de módulo. Se você não fornecer uma ID de dispositivo, o nome comum (CN) no certificado X.509 será usado.
Dispositivo IoT Edge: selecione True para declarar que o registro é para um dispositivo IoT Edge.
Selecione os hubs IoT aos quais este dispositivo pode ser atribuído: Escolha o hub IoT vinculado ao qual você deseja conectar seu dispositivo. Você pode escolher vários hubs e o dispositivo será atribuído a um deles de acordo com a política de alocação selecionada.
Estado gêmeo inicial do dispositivo: adicione um valor de tag a ser adicionado ao gêmeo do dispositivo, se desejar. Você pode usar tags para segmentar grupos de dispositivos para implantação automática. Por exemplo:
{ "tags": { "environment": "test" }, "properties": { "desired": {} } }
Selecione Guardar.
Em Gerenciar Inscrições, você pode ver a ID de Registro da inscrição que acabou de criar. Anote isso, pois ele pode ser usado quando você provisionar seu dispositivo.
Agora que existe um registro para esse dispositivo, o tempo de execução do IoT Edge pode provisionar automaticamente o dispositivo durante a instalação.
Instalar o IoT Edge
Implante o Azure IoT Edge para Linux no Windows em seu dispositivo de destino.
Nota
O processo PowerShell a seguir descreve como implantar o IoT Edge para Linux no Windows no dispositivo local. Para implantar em um dispositivo de destino remoto usando o PowerShell, você pode usar o PowerShell Remoto para estabelecer uma conexão com um dispositivo remoto e executar esses comandos remotamente nesse dispositivo.
Em uma sessão do PowerShell com privilégios elevados, execute um dos seguintes comandos, dependendo da arquitetura do dispositivo de destino, para baixar o IoT Edge para Linux no Windows.
X64/AMD64
$msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi')) $ProgressPreference = 'SilentlyContinue' Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_X64" -OutFile $msiPath
ARM64
$msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi')) $ProgressPreference = 'SilentlyContinue' Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_ARM64" -OutFile $msiPath
Instale o IoT Edge para Linux no Windows no seu dispositivo.
Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
Você pode especificar diretórios personalizados de instalação do IoT Edge para Linux no Windows e VHDX adicionando
INSTALLDIR="<FULLY_QUALIFIED_PATH>"
parâmetros eVHDXDIR="<FULLY_QUALIFIED_PATH>"
ao comando install. Por exemplo, se você quiser usar a pasta D:\EFLOW para instalação e D :\EFLOW-VHDX para o VHDX, poderá usar o seguinte cmdlet do PowerShell.Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
Defina a política de execução no dispositivo de destino como
AllSigned
se ainda não estiver. Consulte os pré-requisitos do PowerShell para comandos para verificar a política de execução atual e definir a política de execução comoAllSigned
.Crie a implantação do IoT Edge para Linux no Windows. A implantação cria sua máquina virtual Linux e instala o tempo de execução do IoT Edge para você.
Deploy-Eflow
Gorjeta
Por padrão, o
Deploy-Eflow
comando cria sua máquina virtual Linux com 1 GB de RAM, 1 núcleo vCPU e 16 GB de espaço em disco. No entanto, os recursos de que sua VM precisa dependem muito das cargas de trabalho implantadas. Se sua VM não tiver memória suficiente para suportar suas cargas de trabalho, ela não será iniciada.Você pode personalizar os recursos disponíveis da máquina virtual usando os
Deploy-Eflow
parâmetros opcionais do comando. Isso é necessário para implantar o EFLOW em um dispositivo com os requisitos mínimos de hardware.Por exemplo, o comando a seguir cria uma máquina virtual com 1 núcleo de vCPU, 1 GB de RAM (representado em MB) e 2 GB de espaço em disco:
Deploy-Eflow -cpuCount 1 -memoryInMB 1024 -vmDataSize 2
Para obter informações sobre todos os parâmetros opcionais disponíveis, consulte Funções do PowerShell para IoT Edge para Linux no Windows.
Aviso
Por padrão, a máquina virtual EFLOW Linux não tem configuração de DNS. As implantações usando DHCP tentarão obter a configuração DNS propagada pelo servidor DHCP. Verifique a configuração do DNS para garantir a conectividade com a Internet. Para obter mais informações, consulte AzEFLOW-DNS.
Você pode atribuir uma GPU à sua implantação para habilitar módulos Linux acelerados por GPU. Para obter acesso a esses recursos, você precisa instalar os pré-requisitos detalhados em Aceleração de GPU para o Azure IoT Edge para Linux no Windows.
Para usar uma passagem de GPU, adicione os parâmetros gpuName, gpuPassthroughType e gpuCount ao comando
Deploy-Eflow
. Para obter informações sobre todos os parâmetros opcionais disponíveis, consulte Funções do PowerShell para IoT Edge para Linux no Windows.Aviso
Habilitar a passagem de dispositivo de hardware pode aumentar os riscos de segurança. A Microsoft recomenda um driver de mitigação de dispositivo do fornecedor da GPU, quando aplicável. Para obter mais informações, consulte Implantar dispositivos gráficos usando atribuição de dispositivo discreto.
Digite 'Y' para aceitar os termos da licença.
Digite 'O' ou 'R' para ativar ou desativar os dados de diagnóstico opcionais, dependendo da sua preferência.
Quando a implantação estiver concluída, a janela do PowerShell relatará a implantação bem-sucedida.
Após uma implantação bem-sucedida, você estará pronto para provisionar seu dispositivo.
Provisionar o dispositivo com sua identidade na nuvem
Depois que o tempo de execução estiver instalado em seu dispositivo, configure o dispositivo com as informações que ele usa para se conectar ao serviço de provisionamento do dispositivo e ao Hub IoT.
Tenha as seguintes informações prontas:
- O valor DPS ID Scope . Você pode recuperar esse valor na página de visão geral da sua instância do DPS no portal do Azure.
- O arquivo de cadeia de certificados de identidade do dispositivo no dispositivo.
- O arquivo de chave de identidade do dispositivo no dispositivo.
Execute o seguinte comando em uma sessão elevada do PowerShell com os valores de espaço reservado atualizados com seus próprios valores:
Provision-EflowVm -provisioningType DpsX509 -scopeId PASTE_YOUR_ID_SCOPE_HERE -registrationId PASTE_YOUR_REGISTRATION_ID_HERE -identityCertPath PASTE_ABSOLUTE_PATH_TO_IDENTITY_CERTIFICATE_HERE -identityPrivateKey PASTE_ABSOLUTE_PATH_TO_IDENTITY_PRIVATE_KEY_HERE
Verificar se a instalação foi bem-sucedida
Verifique se o IoT Edge para Linux no Windows foi instalado e configurado com êxito no seu dispositivo IoT Edge.
Você pode verificar se o registro individual criado no serviço de provisionamento de dispositivo foi usado. Navegue até a instância do serviço de provisionamento de dispositivo no portal do Azure. Abra os detalhes de inscrição para o registro individual que você criou. Observe que o status do registro é atribuído e o ID do dispositivo está listado.
Entre no IoT Edge para Linux na máquina virtual Windows usando o seguinte comando em sua sessão do PowerShell:
Connect-EflowVm
Nota
A única conta permitida para SSH para a máquina virtual é o usuário que a criou.
Depois de fazer login, você pode verificar a lista de módulos do IoT Edge em execução usando o seguinte comando do Linux:
sudo iotedge list
Se você precisar solucionar problemas do serviço IoT Edge, use os seguintes comandos do Linux.
Se precisar de resolver problemas relacionados com o serviço, obtenha os registos do serviço.
sudo iotedge system logs
Use a ferramenta para verificar a configuração e o
check
status da conexão do dispositivo.sudo iotedge check
Nota
Em um dispositivo recém-provisionado, você pode ver um erro relacionado ao IoT Edge Hub:
× prontidão para produção: o diretório de armazenamento do Edge Hub é mantido no sistema de arquivos host - Erro
Não foi possível verificar o estado atual do contêiner edgeHub
Esse erro é esperado em um dispositivo recém-provisionado porque o módulo IoT Edge Hub não está em execução. Para resolver o erro, no Hub IoT, defina os módulos para o dispositivo e crie uma implantação. A criação de uma implantação para o dispositivo inicia os módulos no dispositivo, incluindo o módulo IoT Edge Hub.
Quando você cria um novo dispositivo IoT Edge, ele exibe o código 417 -- The device's deployment configuration is not set
de status no portal do Azure. Esse status é normal e significa que o dispositivo está pronto para receber uma implantação de módulo.
Desinstalar o IoT Edge para Linux no Windows
Se você quiser remover a instalação do Azure IoT Edge para Linux no Windows do seu dispositivo, use os comandos a seguir.
- Abrir Definições no Windows
- Selecione Adicionar ou remover programas
- Selecione o aplicativo Azure IoT Edge
- Selecione Desinstalar
Próximos passos
O processo de registro do serviço de provisionamento de dispositivos permite definir a ID do dispositivo e as tags gêmeas do dispositivo ao mesmo tempo em que provisiona o novo dispositivo. Você pode usar esses valores para segmentar dispositivos individuais ou grupos de dispositivos usando o gerenciamento automático de dispositivos. Saiba como Implantar e monitorar módulos do IoT Edge em escala usando o portal do Azure ou usando a CLI do Azure.
Também pode:
- Continue a implantar módulos do IoT Edge para saber como implantar módulos em seu dispositivo.
- Saiba como gerenciar certificados em sua máquina virtual IoT Edge para Linux no Windows e transferir arquivos do sistema operacional host para sua máquina virtual Linux.
- Saiba como configurar seus dispositivos IoT Edge para se comunicarem por meio de um servidor proxy.