Share via


Implantar o IoT Edge em uma VM do Ubuntu no Azure Stack Edge

APLICA-SE A:Yes for Pro GPU SKUAzure Stack Edge Pro - GPUYes for Pro 2 SKUAzure Stack Edge Pro 2Yes for Pro R SKUAzure Stack Edge Pro R Azure Stack Edge Mini RYes for Mini R SKU

Este artigo descreve como implantar um tempo de execução do IoT Edge em uma VM do Ubuntu em execução em seu dispositivo Azure Stack Edge. Para novos trabalhos de desenvolvimento, use o método de implantação de autoatendimento descrito neste artigo, pois ele usa a versão de software mais recente.

Fluxo de alto nível

O fluxo de alto nível é o seguinte:

  1. Crie ou identifique a instância do Hub IoT ou do DPS (Serviço de Provisionamento de Dispositivo) do Hub IoT do Azure.
  2. Use a CLI do Azure para adquirir a imagem da VM do Ubuntu 20.04 LTS.
  3. Carregue a imagem do Ubuntu na biblioteca de imagens da VM do Azure Stack Edge.
  4. Implante a imagem do Ubuntu como uma VM usando as seguintes etapas:
    1. Forneça o nome da VM, o nome de usuário e a senha. A criação de outro disco é opcional.
    2. Configure a configuração de rede.
    3. Forneça um script cloud-init preparado na guia Avançado.

Pré-requisitos

Antes de começar, certifique-se de que tem:

  • Um dispositivo Azure Stack Edge que você ativou. Para obter etapas detalhadas, consulte Ativar a GPU do Azure Stack Edge Pro.

  • Acesso à imagem mais recente da VM do Ubuntu 20.04, a imagem do Azure Marketplace ou uma imagem personalizada que você está trazendo:

    $urn = Canonical:0001-com-ubuntu-server-focal:20_04-lts:20.04.202007160

    Use as etapas em Pesquisar imagens do Azure Marketplace para adquirir a imagem da VM.

Preparar o script cloud-init

Para implantar o tempo de execução do IoT Edge na VM do Ubuntu, use um script cloud-init durante a implantação da VM.

Use as etapas em uma das seguintes seções:

Usar provisionamento de chave simétrica

Para conectar seu dispositivo ao Hub IoT sem DPS, use as etapas nesta seção para preparar um script cloud-init para a página Avançado de criação de VM para implantar o tempo de execução do IoT Edge e o tempo de execução do contêiner da Nvidia.

  1. Use um Hub IoT existente ou crie um novo Hub. Use estas etapas para criar um Hub IoT.

  2. Use estas etapas para registrar seu dispositivo Azure Stack Edge no Hub IoT.

  3. Recupere a Cadeia de Conexão Primária do Hub IoT para seu dispositivo e cole-a no local abaixo para DeviceConnectionString.

Script de inicialização na nuvem para provisionamento de chaves simétricas


#cloud-config

runcmd:
  - dcs="<DeviceConnectionString>"
  - |
      set -x
      (

        # Wait for docker daemon to start

        while [ $(ps -ef | grep -v grep | grep docker | wc -l) -le 0 ]; do 
          sleep 3
        done
        
        if [ $(lspci | grep NVIDIA | wc -l) -gt 0 ]; then

          #install Nvidia drivers

          apt install -y ubuntu-drivers-common
         ubuntu-drivers devices
          ubuntu-drivers autoinstall

          # Install NVIDIA Container Runtime

          curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | apt-key add -
          distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
          curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | tee /etc/apt/sources.list.d/nvidia-container-runtime.list
          apt update
          apt install -y nvidia-container-runtime
        fi
        
        # Restart Docker

        systemctl daemon-reload
        systemctl restart docker

        # Install IoT Edge

        apt install -y aziot-edge

        if [ ! -z $dcs ]; then
          iotedge config mp --connection-string $dcs
          iotedge config apply
        fi
      if [ $(lspci | grep NVIDIA | wc -l) -gt 0 ]; then      
         reboot
      fi       ) &

apt:
  preserve_sources_list: true
  sources:
    msft.list:
      source: "deb https://packages.microsoft.com/ubuntu/20.04/prod focal main"
      key: |
        -----BEGIN PGP PUBLIC KEY BLOCK-----
        Version: GnuPG v1.4.7 (GNU/Linux)

        mQENBFYxWIwBCADAKoZhZlJxGNGWzqV+1OG1xiQeoowKhssGAKvd+buXCGISZJwT
        LXZqIcIiLP7pqdcZWtE9bSc7yBY2MalDp9Liu0KekywQ6VVX1T72NPf5Ev6x6DLV
        7aVWsCzUAF+eb7DC9fPuFLEdxmOEYoPjzrQ7cCnSV4JQxAqhU4T6OjbvRazGl3ag
        OeizPXmRljMtUUttHQZnRhtlzkmwIrUivbfFPD+fEoHJ1+uIdfOzZX8/oKHKLe2j
        H632kvsNzJFlROVvGLYAk2WRcLu+RjjggixhwiB+Mu/A8Tf4V6b+YppS44q8EvVr
        M+QvY7LNSOffSO6Slsy9oisGTdfE39nC7pVRABEBAAG0N01pY3Jvc29mdCAoUmVs
        ZWFzZSBzaWduaW5nKSA8Z3Bnc2VjdXJpdHlAbWljcm9zb2Z0LmNvbT6JATUEEwEC
        AB8FAlYxWIwCGwMGCwkIBwMCBBUCCAMDFgIBAh4BAheAAAoJEOs+lK2+EinPGpsH
        /32vKy29Hg51H9dfFJMx0/a/F+5vKeCeVqimvyTM04C+XENNuSbYZ3eRPHGHFLqe
        MNGxsfb7C7ZxEeW7J/vSzRgHxm7ZvESisUYRFq2sgkJ+HFERNrqfci45bdhmrUsy
        7SWw9ybxdFOkuQoyKD3tBmiGfONQMlBaOMWdAsic965rvJsd5zYaZZFI1UwTkFXV
        KJt3bp3Ngn1vEYXwijGTa+FXz6GLHueJwF0I7ug34DgUkAFvAs8Hacr2DRYxL5RJ
        XdNgj4Jd2/g6T9InmWT0hASljur+dJnzNiNCkbn9KbX7J/qK1IbR8y560yRmFsU+
        NdCFTW7wY0Fb1fWJ+/KTsC4=
        =J6gs
        -----END PGP PUBLIC KEY BLOCK----- 
packages:
  - moby-cli
  - moby-engine
write_files:
  - path: /etc/systemd/system/docker.service.d/override.conf
    permissions: "0644"
    content: |
      [Service]
      ExecStart=
      ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime --log-driver local

Usar DPS

Use as etapas nesta seção para conectar seu dispositivo ao DPS e ao IoT Central. Você preparará um arquivo de script.sh para implantar o tempo de execução do IoT Edge ao criar a VM.

  1. Use o Hub IoT e o DPS existentes ou crie um novo Hub IoT.

  2. Vá para o recurso DPS e crie um registro individual. 

    1. Vá para Serviço de Provisionamento de>Dispositivos Gerenciar inscrições Adicione inscrições> individuais.
    2. Verifique se a seleção de Chave Simétrica para tipo de atestado e dispositivo IoT Edge é True. A seleção padrão é False.
    3. Recupere as seguintes informações da página de recursos do DPS:
      • ID de registo. Recomendamos que você use a mesma ID que a ID do dispositivo para seu Hub IoT.
      • ID Scope que está disponível no menu Visão geral.
      • Chave SAS primária no menu Inscrição individual.
  3. Copie e cole valores do Hub IoT (IDScope) e do DPS (RegistrationID, Symmetric Key) nos argumentos de script.

Script de inicialização na nuvem para DPS do Hub IoT


#cloud-config

runcmd:
    - dps_idscope="<DPS IDScope>"
    - registration_device_id="<RegistrationID>"
    - key="<Symmetric Key>"
    - |
      set -x
      (
      
      wget https://github.com/Azure/iot-edge-config/releases/latest/download/azure-iot-edge-installer.sh -O azure-iot-edge-installer.sh \
      && chmod +x azure-iot-edge-installer.sh \
      && sudo -H ./azure-iot-edge-installer.sh -s $dps_idscope -r $registration_device_id -k $key \
      && rm -rf azure-iot-edge-installer.sh
      
      # Wait for docker daemon to start

      while [ $(ps -ef | grep -v grep | grep docker | wc -l) -le 0 ]; do 
        sleep 3
      done

      systemctl stop aziot-edge

      if [ $(lspci | grep NVIDIA | wc -l) -gt 0 ]; then

        #install Nvidia drivers

        apt install -y ubuntu-drivers-common
        ubuntu-drivers devices
        ubuntu-drivers autoinstall

        # Install NVIDIA Container Runtime

        curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | apt-key add -
        distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
        curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | tee /etc/apt/sources.list.d/nvidia-container-runtime.list
        apt update
        apt install -y nvidia-container-runtime
      fi

      # Restart Docker

      systemctl daemon-reload
      systemctl restart docker

      systemctl start aziot-edge    
      if [ $(lspci | grep NVIDIA | wc -l) -gt 0 ]; then      
         reboot
      fi
      ) &
write_files:
  - path: /etc/systemd/system/docker.service.d/override.conf
    permissions: "0644"
    content: |
      [Service]
      ExecStart=
      ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime --log-driver local

Implantar o tempo de execução do IoT Edge

A implantação do tempo de execução do IoT Edge faz parte da criação da VM, usando o script cloud-init mencionado acima.

Aqui estão as etapas de alto nível para implantar o tempo de execução da VM e do IoT Edge:

  1. Adquira a imagem da VM do Ubuntu no Azure Marketplace. Para obter etapas detalhadas, siga as instruções em Usar imagem do Azure Marketplace para criar uma imagem de VM para seu Azure Stack Edge.

    1. No portal do Azure, vá para o Azure Marketplace.
    2. Conecte-se ao Azure Cloud Shell ou a um cliente com a CLI do Azure instalada. Para obter etapas detalhadas, consulte Guia de início rápido para Bash no Azure Cloud Shell.

    Nota

    Fechar a sessão do shell excluirá todas as variáveis criadas durante a sessão do shell. Reabrir a sessão exigirá recriar as variáveis.

    c. Execute o seguinte comando para definir a assinatura.

    az account set –subscription <subscription id>
    
  2. Use as etapas em Pesquisar imagens do Azure Marketplace para pesquisar uma imagem do Ubuntu 20.04 LTS no Azure Marketplace.

    Exemplo de uma imagem do Ubuntu 20.04 LTS:

    $urn = Canonical:0001-com-ubuntu-server-focal:20_04-lts:20.04.202007160
    
  3. Crie um novo disco gerenciado a partir da imagem do Marketplace. Para obter etapas detalhadas, consulte Usar a imagem do Azure Marketplace para criar uma imagem de VM para seu Azure Stack Edge.

  4. Exporte um VHD do disco gerenciado para uma conta de Armazenamento do Azure. Para obter etapas detalhadas, consulte Exportar um VHD do disco gerenciado para o Armazenamento do Azure.

  5. Siga estas etapas para criar uma VM do Ubuntu usando a imagem da VM.

    1. Especifique o script cloud-init na guia Avançado. Para criar uma VM, consulte Implantar VM de GPU via portal do Azure ou Implantar VM via portal do Azure.

      Screenshot of the Advanced tab of VM configuration in the Azure portal.

    2. Especifique as cadeias de conexão de dispositivo apropriadas no cloud-init para se conectar ao Hub IoT ou dispositivo DPS. Para obter etapas detalhadas, consulte Provisionar com chaves simétricas ou Provisionar com DPS do Hub IoT.

      Screenshot of the Custom data field of VM configuration in the Azure portal.

Se você não especificou o cloud-init durante a criação da VM, terá que implantar manualmente o tempo de execução do IoT Edge depois que a VM for criada:

  1. Conecte-se à VM via SSH.
  2. Instale o mecanismo de contêiner na VM. Para obter etapas detalhadas, consulte Criar e provisionar um dispositivo IoT Edge no Linux usando chaves simétricas ou Guia de início rápido - Configurar o DPS do Hub IoT com o portal do Azure.

Verificar o tempo de execução do IoT Edge

Use estas etapas para verificar se o tempo de execução do IoT Edge está em execução.

  1. Vá para o recurso do Hub IoT no portal do Azure.

  2. Selecione o dispositivo IoT Edge.

  3. Verifique se o tempo de execução do IoT Edge está em execução.

    Screenshot of the IoT Edge runtime status in the Azure portal.

    Para solucionar problemas de configuração do dispositivo IoT Edge, consulte Solucionar problemas do dispositivo IoT Edge.

Atualizar o tempo de execução do IoT Edge

Para atualizar a VM, siga as instruções em Atualizar o IoT Edge. Para encontrar a versão mais recente do Azure IoT Edge, consulte Versões do Azure IoT Edge.

Próximos passos

Para implantar e executar um módulo IoT Edge em sua VM do Ubuntu, consulte as etapas em Implantar módulos do IoT Edge.

Para implantar o módulo DeepStream da Nvidia, consulte Implantar o módulo Nvidia DeepStream na VM do Ubuntu no Azure Stack Edge Pro com GPU.

Para implantar o NVIDIA DIGITS, consulte Habilitar uma GPU em um módulo NVIDIA pré-fabricado.