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

Aplica-se a:IoT Edge 1.4 checkmark IoT Edge 1.4

Importante

O IoT Edge 1.4 é a versão suportada. Se tiver uma versão anterior, consulte Atualizar IoT Edge.

Este artigo fornece instruções para o provisionamento automático de um dispositivo Azure IoT Edge para Linux no Windows usando um TPM (Trusted Platform Module). Você pode provisionar automaticamente dispositivos do Azure IoT Edge com o serviço de provisionamento de dispositivo 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.

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

  • Autoprovisionamento de um dispositivo Linux no Windows com hardware TPM físico.
  • Autoprovisionar um dispositivo Linux no Windows usando um TPM simulado. Recomendamos esta 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:

  • Instale o IoT Edge para Linux no Windows.
  • Recupere as informações do TPM do seu dispositivo.
  • Crie um registro individual para o dispositivo.
  • Provisione seu dispositivo com suas informações de TPM.

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

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

  • 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:

  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 não AllSignedfor , você poderá definir a política de local 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.

Nota

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

Você só pode criar registros de serviço de provisionamento de dispositivo individuais, não de grupo, quando usar um TPM.

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.

  1. 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
      
  2. 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 e VHDXDIR="<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"
    
  3. 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 como AllSigned.

  4. 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 abaixo cria uma máquina virtual com 1 núcleo 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ê precisará 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.

  5. Digite 'Y' para aceitar os termos da licença.

  6. Digite 'O' ou 'R' para ativar ou desativar os dados de diagnóstico opcionais, dependendo da sua preferência.

  7. Quando a implantação estiver concluída, a janela do PowerShell informará a implantação bem-sucedida.

    A successful deployment will say 'Deployment successful' at the end of the messages, PNG.

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

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

Habilitar passagem TPM

O IoT Edge para Linux em VM Windows tem um recurso TPM que pode ser habilitado ou desabilitado. Por padrão, ele está desativado. Quando esse recurso está habilitado, a VM pode acessar o TPM da máquina host.

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

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

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    
  3. Ative o recurso 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 seu chip TPM e ID de registro para seu dispositivo. Você fornece essas informações à sua instância do serviço de provisionamento de dispositivo para que o serviço possa reconhecer seu dispositivo quando ele tenta se conectar.

A chave de endosso é exclusiva para cada chip TPM. É obtido do fabricante de chips TPM associado a ele. Você pode derivar um ID de registro exclusivo para seu 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 seu TPM. Para usar o script, siga estas etapas no 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 dispositivo

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

Ao criar um registro no serviço de provisionamento de dispositivo, 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 usada em sua solução, como região, ambiente, local ou tipo de dispositivo. Essas tags são usadas para criar implantações automáticas.

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.

  1. No portal do Azure, vá para sua instância do serviço de provisionamento de dispositivo do Hub IoT.

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

  3. Selecione Adicionar inscrição 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 dispositivo físico.

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

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

    5. Escolha o hub IoT vinculado ao qual você deseja conectar seu 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 tag ao Estado Gêmeo Inicial do Dispositivo, se desejar. Você pode usar tags para segmentar grupos de dispositivos para implantação de módulos. Para obter mais informações, consulte Implantar módulos do IoT Edge em escala.

    7. Selecione Guardar.

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.

Provisionar o dispositivo com sua identidade na nuvem

  1. Abra uma sessão do PowerShell elevada 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 dispositivo.

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

    Se você inscreveu o dispositivo usando uma ID de registro personalizada, também deve especificar essa ID de registro ao provisionar:

    Provision-EflowVM -provisioningType "DpsTpm" -scopeId "SCOPE_ID_HERE" -registrationId "REGISTRATION_ID_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.

Se o tempo de execução tiver sido iniciado com êxito, você poderá entrar em seu hub IoT e começar a implantar módulos do IoT Edge em seu dispositivo.

Você pode verificar se o registro individual criado no serviço de provisionamento de dispositivo foi usado. Vá para 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.

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

  1. Conecte-se ao IoT Edge para Linux na VM do Windows usando o seguinte comando em sua sessão do PowerShell:

    Connect-EflowVm
    

    Nota

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

  2. Depois de entrar, você pode 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 do serviço IoT Edge, use os seguintes comandos do Linux.

    1. Se precisar de resolver problemas relacionados com o serviço, obtenha os registos do serviço.

      sudo iotedge system logs
      
    2. 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.

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.

  1. Abrir Definições no Windows
  2. Selecione Adicionar ou remover programas
  3. Selecione o aplicativo Azure IoT Edge
  4. 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 direcionar 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 a CLI do Azure.