Criar e provisionar um IoT Edge para Linux no dispositivo Windows em escala usando um TPM

Aplica-se a: marca de seleção do IoT Edge 1.4 IoT Edge 1.4

Importante

Azure IoT Edge 1.5 LTS e IoT Edge 1.4 são versões com suporte. O IoT Edge 1.4 LTS está chegando ao fim do serviço em 12/11/2024. Se você estiver em uma versão anterior, confira Atualizar o IoT Edge.

Este artigo fornece instruções para o provisionamento automático de um dispositivo do Azure IoT Edge para Linux no Windows usando um TPM (Trusted Platform Module). Você pode provisionar automaticamente dispositivos Azure IoT Edge com o Serviço de Provisionamento de Dispositivos no Hub IoT do Azure. Se você não estiver familiarizado com o processo de provisionamento automático, reveja a visão geral de provisionamento antes de continuar.

Este artigo descreve duas metodologias. Selecione sua preferência com base na arquitetura de sua solução:

  • Provisionar automaticamente um dispositivo Linux no Windows com hardware de TPM físico.
  • Provisionar automaticamente um dispositivo Linux no Windows usando um TPM simulado. Recomendamos essa metodologia apenas como um cenário de teste. Um TPM simulado não oferece a mesma segurança que um TPM físico.

As tarefas são as seguintes:

  • Instalar o IoT Edge para Linux no Windows
  • Recuperar as informações do TPM do seu dispositivo
  • Crie um registro individual para o dispositivo.
  • Provisionar seu dispositivo com suas informações do TPM

Pré-requisitos

Recursos de nuvem

Requisitos do dispositivo

Um dispositivo Windows com os seguintes requisitos mínimos:

  • Requisitos do Sistema

    • Windows 101/11 (Pro, Enterprise, IoT Enterprise)
    • Windows Server 20191/2022
      1 Windows 10 e Windows Server 2019, no mínimo build 17763 com todas as atualizações cumulativas atuais instaladas.
  • Requisitos de hardware

    • Memória livre mínima: 1 GB
    • Espaço em disco livre mínimo: 10 GB
  • Suporte à virtualização

  • Suporte à rede

    • O não Windows Server vem com um comutador padrão. Para implantar o EFLOW em um dispositivo Windows Server, crie um comutador virtual. Para obter mais informações, confira Criar um comutador virtual para Linux no Windows.
    • As versões do Windows Desktop vêm com um comutador padrão que pode ser usado para a instalação do EFLOW. Se necessário, você pode criar o seu comutador virtual personalizado.

Dica

Se você quer usar os módulos do Linux acelerados por GPU na 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 precisará de acesso a um build do Programa Windows Insider. Para determinar suas necessidades de configuração e atender a esses pré-requisitos, confira Aceleração de GPU do Azure IoT Edge para Linux no Windows.

Reserve tempo para atender aos pré-requisitos de aceleração de GPU agora. Será necessário reiniciar o processo de instalação se você decidir que deseja a aceleração de GPU durante a instalação.

Ferramentas para desenvolvedores

Prepare o dispositivo de destino para a instalação do Azure IoT Edge para Linux no Windows e a implantação da máquina virtual do Linux:

  1. 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 local machine não for AllSigned, você poderá definir a política de execução usando:

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

Para obter mais informações sobre o módulo do PowerShell do Azure IoT Edge para Linux no Windows, confira a referência de funções do PowerShell.

Observação

O TPM 2.0 é necessário quando você usa o atestado do TPM com o serviço de provisionamento de dispositivos.

Ao usar um TPM, você só pode criar registros de serviço de provisionamento de dispositivos individuais, não de grupo.

Instalar o Edge IoT

Implante o Azure IoT Edge para Linux no Windows no dispositivo de destino.

Observação

O processo do PowerShell a seguir descreve como implantar o IoT Edge para Linux no Windows no dispositivo local. Para fazer a implantação em um dispositivo de destino remoto usando o PowerShell, use o PowerShell Remoto para estabelecer uma conexão com um dispositivo remoto e executar esses comandos remotamente no dispositivo.

  1. Em uma sessão elevada do PowerShell, execute um dos comandos a seguir, 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
      
  2. Instale o IoT Edge para Linux no Windows em 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 no Linux e no Windows e do VHDX adicionando os parâmetros INSTALLDIR="<FULLY_QUALIFIED_PATH>" e VHDXDIR="<FULLY_QUALIFIED_PATH>" ao comando de instalação. Por exemplo, se você quiser usar a pasta D:\EFLOW para instalação e a pasta 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"
    
  3. Defina a política de execução no dispositivo de destino como AllSigned, se ainda não estiver definida. Confira os pré-requisitos do PowerShell para comandos para verificar a política de execução atual e definir a política de execução como AllSigned.

  4. Crie a implantação do IoT Edge para Linux no Windows. A implantação cria sua máquina virtual do Linux e instala o runtime do IoT Edge para você.

    Deploy-Eflow
    

    Dica

    Por padrão, o comando Deploy-Eflow cria a 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 necessários para a VM são dependem muito das cargas de trabalho implantadas. Se a VM não tiver memória suficiente para dar suporte às cargas de trabalho, ela não será iniciada.

    Você pode personalizar os recursos disponíveis da máquina virtual usando os parâmetros opcionais do comando Deploy-Eflow. Isso é necessário para implantar o EFLOW em um dispositivo com os requisitos mínimos de hardware.

    Por exemplo, o comando abaixo cria uma máquina virtual com 1 núcleo vCPU, 1 GB de RAM (representados 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, confira Funções do PowerShell para o IoT Edge para Linux no Windows.

    Aviso

    Por padrão, a máquina virtual do Linux do EFLOW não tem nenhuma configuração de DNS. As implantações que usam o DHCP tentarão obter a configuração de DNS propagada pelo servidor DHCP. Verifique a configuração de DNS para garantir a conectividade com a Internet. Para obter mais informações, confira AzEFLOW-DNS.

    Você pode atribuir uma GPU à implantação para habilitar os módulos do Linux acelerados por GPU. Para obter acesso a esses recursos, você precisará instalar os pré-requisitos detalhados em Aceleração de GPU do 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, confira Funções do PowerShell para o 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, confira Implantar dispositivos gráficos usando a atribuição discreta de dispositivo.

  5. Insira "Y" para aceitar os termos de licença.

  6. Insira "O" ou "R" para ativar ou desativar Dados de diagnóstico opcionais, dependendo de sua preferência.

  7. Depois que a implantação for concluída, a janela do PowerShell relatará Implantação bem-sucedida.

    Uma implantação bem-sucedida informará

    Após uma implantação bem-sucedida, você estará pronto para provisionar seu dispositivo.

Há algumas etapas para preparar seu dispositivo para provisionamento com o TPM. Deixe sua implantação aberta enquanto prepara o dispositivo. Você retornará à sua implantação posteriormente neste artigo.

Habilitar a passagem do TPM

A VM com IoT Edge para Linux no Windows tem um recurso de TPM que pode ser habilitado ou desabilitado. Ele é desabilitado por padrão. Quando esse recurso está habilitado, a máquina virtual pode acessar o TPM do computador host.

  1. Abra o PowerShell em uma sessão com privilégios elevados.

  2. Se você ainda não fez isso, defina a política de execução em seu dispositivo como AllSigned para executar funções do PowerShell no IoT Edge para Linux no Windows.

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    
  3. Ative o recurso do TPM.

    Set-EflowVmFeature -feature 'DpsTpm' -enable
    

Recuperar as informações do TPM do seu dispositivo

Para provisionar seu dispositivo, você precisa de uma Chave de endosso para o chip do TPM e a ID de registro do seu dispositivo. Forneça essas informações para a sua instância do serviço de provisionamento de dispositivos para que o serviço possa reconhecer seu dispositivo quando ele tentar se conectar.

A chave de endosso é exclusiva para cada chip do TPM. Ela é obtido com o fabricante de chips do TPM associado a ela. Você pode derivar uma ID de registro exclusiva para o dispositivo TPM, por exemplo, criando um hash SHA-256 da chave de endosso.

O IoT Edge para Linux no Windows fornece um script do PowerShell para ajudar a recuperar essas informações do TPM. Para usar o script, siga estas etapas em seu dispositivo:

  1. Abra o PowerShell em uma sessão com privilégios elevados.

  2. Execute o comando.

    Get-EflowVmTpmProvisioningInfo | Format-List
    

Criar um registro de serviço de provisionamento de dispositivos

Use as informações de provisionamento do TPM para criar um registro individual no serviço de provisionamento de dispositivos.

Ao criar um registro no serviço de provisionamento de dispositivos, você tem a oportunidade de declarar um Estado Inicial do Dispositivo Gêmeo. No dispositivo gêmeo, você pode definir marcas para agrupar dispositivos segundo qualquer métrica que precisar em sua solução, como região, ambiente, local ou tipo de dispositivo. Essas marcas são usadas para criar implantações automáticas.

Dica

As etapas neste artigo são para o portal do Microsoft Azure, mas também é possível criar registros individuais usando a CLI do Azure. Para obter mais informações, confira Registro az iot dps. Como parte do comando da CLI, use o sinalizador habilitado para o Edge para especificar que o registro é para um dispositivo do IoT Edge.

  1. No Portal do Azure, navegue até sua instância do Serviço de Provisionamento de Dispositivos no Hub IoT.

  2. Em Configurações, selecione Gerenciar registros.

  3. Selecione Adicionar registro individual e conclua as seguintes etapas para configurar o registro:

    1. Em Mecanismo, selecione TPM.

    2. Forneça a Chave de endosso e a ID de Registro que você copiou da sua VM ou do dispositivo físico.

    3. Forneça uma ID para seu dispositivo se desejar. Se você não fornecer uma ID de dispositivo, a ID de registro será usada.

    4. Selecione True para declarar que a VM ou o dispositivo físico é um dispositivo do IoT Edge.

    5. Escolha o hub IoT vinculado ao qual deseja conectar o dispositivo ou selecione Vincular ao novo Hub IoT. Você pode escolher vários hubs e o dispositivo será atribuído a um deles, de acordo com a política de atribuição selecionada.

    6. Adicione um valor de marca ao estado inicial do dispositivo gêmeo se desejar. Você pode usar marcas para grupos de dispositivos de destino para a implantação do módulo. Para obter mais informações, confira Implantar módulos do IoT Edge em escala.

    7. Selecione Salvar.

Agora que existe um registro para esse dispositivo, o runtime do IoT Edge pode provisionar automaticamente o dispositivo durante a instalação.

Provisionar o dispositivo com a identidade de nuvem dele

  1. Abra uma sessão do PowerShell com privilégios elevados no dispositivo Windows.

  2. Provisione seu dispositivo usando a ID de escopo que você coletou de sua instância do serviço de provisionamento de dispositivos.

    Provision-EflowVM -provisioningType "DpsTpm" -scopeId "SCOPE_ID_HERE"
    

    Se você registrou o dispositivo usando uma ID de registro personalizada, especifique essa ID de registro também ao provisionar:

    Provision-EflowVM -provisioningType "DpsTpm" -scopeId "SCOPE_ID_HERE" -registrationId "REGISTRATION_ID_HERE"
    

Verifique se a instalação bem-sucedida

Verifique se o IoT Edge para Linux no Windows foi instalado e configurado com êxito em seu dispositivo IoT Edge.

Se o runtime foi iniciado com êxito, você pode entrar em seu Hub IoT e iniciar a implantação de módulos do IoT Edge em seu dispositivo.

Você pode verificar se o registro individual criado no serviço de provisionamento de dispositivos foi usado. No portal do Azure, acesse a instância do serviço de provisionamento de dispositivos. Abra os detalhes de registro para o registro individual que você criou. Observe que o status do registro é atribuído e a ID do dispositivo está listada.

Use os seguintes comandos em seu dispositivo para verificar se o IoT Edge foi instalado e iniciado com êxito.

  1. Conecte-se à sua máquina virtual com IoT Edge para Linux no Windows usando o seguinte comando em sua sessão do PowerShell:

    Connect-EflowVm
    

    Observação

    A única conta permitida para SSH à VM é o usuário que a criou.

  2. Depois de fazer logon, você poderá verificar a lista de módulos do IoT Edge em execução usando o seguinte comando do Linux:

    sudo iotedge list
    
  3. Se você precisar solucionar problemas de serviço do IoT Edge, use os comandos do Linux a seguir.

    1. Se você precisar solucionar problemas do serviço, recupere os logs de serviço.

      sudo iotedge system logs
      
    2. Use a ferramenta check para verificar a configuração e o status de conexão do dispositivo.

      sudo iotedge check
      

    Observação

    Em um dispositivo recém-provisionado, você pode ver um erro relacionado ao Hub do IoT Edge:

    × preparação para produção: o diretório de armazenamento do Hub do Edge é persistente no sistema de arquivos do host – erro

    Não foi possível verificar o estado atual do contêiner edgeHub

    Esse erro é esperado em um dispositivo recém-provisionado, pois o módulo do Hub do IoT Edge 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 Hub do IoT Edge.

Desinstalar o IoT Edge para Linux no Windows

Se você quiser remover a instalação do Azure IoT Edge para Linux no Windows do dispositivo, use os comandos a seguir.

  1. Abra as Configurações no Windows
  2. Selecione Adicionar ou remover programas
  3. Selecione o aplicativo Azure IoT Edge
  4. Selecionar Desinstalar

Próximas etapas

O processo de registro do serviço de provisionamento de dispositivos permite definir a ID do dispositivo e as marcas do dispositivo gêmeo ao mesmo tempo quando você provisiona o novo dispositivo. Você pode usar esses valores e o gerenciamento automático de dispositivos para direcionar a dispositivos individuais ou grupos de dispositivos.

Saiba como implantar e monitorar os módulos de IoT Edge em escala usando o portal do Azure ou a CLI do Azure.