Compartilhar via


Tutorial: Configurar um dispositivo do Azure IoT Edge

Aplica-se a:ícone de sim IoT Edge 1.1

Importante

O IoT Edge 1.1 data de término do suporte foi 13 de dezembro de 2022. Confira o Ciclo de Vida do Produto da Microsoft para obter informações sobre o suporte deste produto, serviço, tecnologia ou API. Para obter mais informações sobre como atualizar para a versão mais recente do IoT Edge, consulte Update IoT Edge.

Neste artigo, configuramos uma máquina virtual do Azure executando o Linux para ser um dispositivo do Azure IoT Edge que atua como um gateway transparente. Uma configuração transparente de gateway permite que os dispositivos se conectem ao Hub IoT do Azure por meio do gateway sem saber que o gateway existe. Ao mesmo tempo, um usuário que interage com os dispositivos no Hub IoT não está ciente do dispositivo de gateway intermediário. Por fim, adicionaremos análise de ponta ao nosso sistema ao adicionar módulos do IoT Edge ao gateway transparente.

Observação

Os conceitos neste tutorial se aplicam a todas as versões do IoT Edge, mas o dispositivo de exemplo criado para experimentar o cenário executa o IoT Edge versão 1.1.

As etapas neste artigo normalmente são executadas por um desenvolvedor de nuvem.

Nesta seção do tutorial, você aprenderá a:

  • Crie certificados para permitir que seu dispositivo de gateway se conecte com segurança aos seus dispositivos downstream.
  • Crie um dispositivo IoT Edge.
  • Crie uma máquina virtual do Azure para simular seu dispositivo IoT Edge.

Pré-requisitos

Este artigo faz parte de uma série para um tutorial sobre como usar o Azure Machine Learning no IoT Edge. Cada artigo da série baseia-se no trabalho no artigo anterior. Se você chegou a este artigo diretamente, consulte o primeiro artigo na série.

Criar certificados

Para que um dispositivo funcione como um gateway, ele precisa se conectar com segurança a dispositivos downstream. Com o IoT Edge, você pode usar uma PKI (infraestrutura de chave pública) para configurar conexões seguras entre dispositivos. Nesse caso, estamos permitindo que um dispositivo IoT downstream se conecte a um dispositivo IoT Edge agindo como um gateway transparente. Para manter uma segurança razoável, o dispositivo downstream deve confirmar a identidade do dispositivo IoT Edge. Para obter mais informações sobre como os dispositivos do IoT Edge usam certificados, consulte detalhes de uso do certificado do Azure IoT Edge.

Nesta seção, criamos os certificados autoassinados usando uma imagem do Docker que compilamos e executamos. Optamos por usar uma imagem do Docker para concluir essa etapa porque ela reduz o número de etapas necessárias para criar os certificados no computador de desenvolvimento do Windows. Para entender o que automatizamos com a imagem do Docker, consulte Criar certificados de demonstração para testar os recursos do dispositivo IoT Edge.

  1. Entre em sua VM de desenvolvimento.

  2. Crie uma nova pasta com o caminho e o nome c:\edgeCertificates.

  3. Se ainda não estiver em execução, inicie Docker para Windows no menu Iniciar do Windows.

  4. Abra o Visual Studio Code.

  5. Selecione Arquivo>Abrir Pastae selecione C:\source\IoTEdgeAndMlSample\CreateCertificates.

  6. No painel do Explorer, clique com o botão direito do mouse em dockerfile e selecione Construir Imagem.

  7. Na caixa de diálogo, aceite o valor padrão para o nome da imagem e a tag: createcertificates: latest.

    captura de tela que mostra a criação de certificados no Visual Studio Code.

  8. Aguarde a conclusão da construção.

    Observação

    Você pode ver um aviso sobre uma chave pública ausente. É seguro ignorar esse aviso. Da mesma forma, você verá um aviso de segurança que recomenda verificar ou redefinir permissões em sua imagem, o que é seguro ignorar para essa imagem.

  9. Na janela do terminal do Visual Studio Code, execute o contêiner createcertificates.

    docker run --name createcertificates --rm -v c:\edgeCertificates:/edgeCertificates createcertificates /edgeCertificates
    
  10. O Docker solicitará acesso à unidade de disco C:\. Selecione Compartilhar.

  11. Forneça suas credenciais quando solicitado.

  12. Depois que o contêiner terminar de ser executado, verifique os seguintes arquivos no c:\edgeCertificates:

    • c:\edgeCertificates\certs\azure-iot-test-only.root.ca.cert.pem
    • c:\edgeCertificates\certs\new-edge-device-full-chain.cert.pem
    • c:\edgeCertificates\certs\new-edge-device.cert.pem
    • c:\edgeCertificates\certs\new-edge-device.cert.pfx
    • c:\edgeCertificates\private\new-edge-device.key.pem

Carregar certificados no Azure Key Vault

Para armazenar nossos certificados com segurança e torná-los acessíveis de vários dispositivos, carregaremos os certificados no Azure Key Vault. Como você pode ver na lista anterior, temos dois tipos de arquivos de certificado: PFX e PEM. Trataremos o arquivo PFX como certificados do Key Vault a serem carregados no Key Vault. Os arquivos PEM são texto sem formatação e os trataremos como segredos do Key Vault. Usaremos a instância do Key Vault associada ao workspace do Azure Machine Learning que criamos ao executar os Jupyter notebooks .

  1. No portal do Azure, acesse o workspace do Azure Machine Learning.

  2. Na página de visão geral do workspace do Machine Learning, localize o nome do Key Vault .

    Captura de tela que mostra como copiar o nome do cofre de chaves.

  3. No computador de desenvolvimento, carregue os certificados no Key Vault. Substitua <subscriptionId> e <keyvaultname> por suas informações de recurso.

    c:\source\IoTEdgeAndMlSample\CreateCertificates\upload-keyvaultcerts.ps1 -SubscriptionId <subscriptionId> -KeyVaultName <keyvaultname>
    
  4. Se for solicitado, faça login no Azure.

  5. O script será executado por alguns minutos, gerando uma saída que lista as novas entradas do Key Vault.

    Captura de tela que mostra a saída do script do Key Vault.

Registrar um dispositivo IoT Edge

Para conectar um dispositivo do Azure IoT Edge a um hub IoT, primeiro registramos um dispositivo no hub. Usamos a cadeia de conexão da identidade do dispositivo na nuvem para configurar o runtime em nosso dispositivo IoT Edge. Depois que um dispositivo configurado se conecta ao hub, podemos implantar módulos e enviar mensagens. Também podemos alterar a configuração do dispositivo físico do IoT Edge alterando sua identidade de dispositivo correspondente no Hub IoT.

Para este tutorial, registramos a nova identidade do dispositivo usando o Visual Studio Code. Você também pode concluir essas etapas usando o portal do Azure ou a CLI do Azure. Seja qual for o método escolhido, verifique se você obtém a string de conexão do seu dispositivo IoT Edge. A cadeia de conexão do dispositivo pode ser encontrada na página de detalhes do dispositivo no portal do Azure.

  1. No computador de desenvolvimento, abra o Visual Studio Code.

  2. Expanda o quadro do Hub IoT da visualização do Explorer no Visual Studio Code.

  3. Selecione as reticências e selecione Criar dispositivo do IoT Edge.

  4. Dê um nome ao dispositivo. Por conveniência, usamos o nome aaTurbofanEdgeDevice para que ele seja classificado na parte superior dos dispositivos listados.

  5. O novo dispositivo aparece na lista de dispositivos.

    captura de tela que mostra uma exibição do dispositivo no Visual Studio Code Explorer.

Implantar uma máquina virtual do Azure

Usamos uma máquina virtual Ubuntu 18.04 LTS com o runtime do Azure IoT Edge instalado e configurado. A implantação usa um modelo do Azure Resource Manager mantido no repositório do projeto iotedge-vm-deploy. Ele provisiona o dispositivo IoT Edge registrado na etapa anterior usando a cadeia de conexão fornecida no modelo.

Você pode implantar a máquina virtual usando o portal do Azure ou a CLI do Azure. Mostraremos as etapas do portal do Azure. Consulte Executar o Azure IoT Edge em Máquinas Virtuais do Ubuntu para obter mais informações.

Implantar usando o botão Implantar no Azure

  1. Para usar o modelo do ARM iotedge-vm-deploy para implantar sua máquina virtual Ubuntu 18.04 LTS, clique no botão abaixo:

    Botão para Implantar no Azure: iotedge-vm-deploy

  2. Na janela recém-iniciada, preencha os campos de formulário disponíveis.

    Campo Descrição
    Assinatura A assinatura ativa do Azure na qual a máquina virtual será implantada.
    Grupo de recursos Um Grupo de Recursos existente ou recém-criado para conter a máquina virtual e os recursos associados.
    Prefixo do rótulo DNS Um valor obrigatório de sua preferência que será usado para prefixar o nome do host da máquina virtual.
    Nome de Usuário do Administrador Um nome de usuário que será concedido privilégios de root na implantação.
    Cadeia de Conexão de Dispositivo Uma cadeia de conexão do dispositivo para um dispositivo criado no Hub IoT desejado.
    tamanho da VM O tamanho da máquina virtual a ser implantada
    Versão do sistema operacional Ubuntu A versão do sistema operacional Ubuntu que será instalada na máquina virtual de base.
    Local A região geográfica na qual a máquina virtual será implantada. Esse valor assumirá a localização do Grupo de Recursos selecionado como padrão.
    Tipo de autenticação Escolha sshPublicKey ou senha, de acordo com sua preferência.
    Senha ou chave de administrador O valor da Chave Pública SSH ou o valor da senha, dependendo do Tipo de Autenticação escolhida.
  3. Quando todos os campos tiverem sido preenchidos, marque a caixa de seleção na parte inferior da página para aceitar os termos e selecione Examinar + criar e Criar para iniciar a implantação.

  4. Navegue até sua máquina virtual no portal do Azure. Você pode encontrá-lo por meio do grupo de recursos ou selecionando máquinas virtuais nos serviços do Azure na página inicial do portal.

  5. Anote o nome DNS de sua máquina virtual. Você precisará dele para fazer logon em sua máquina virtual.

Conectar-se ao dispositivo IoT Edge

  1. Abra um prompt de comando e use o comando a seguir para fazer logon em sua máquina virtual. Insira suas próprias informações para nome de usuário e nome DNS com base na seção anterior.

    ssh <adminUsername>@<DNS_name>
    
  2. Quando for solicitado que você valide a autenticidade do host, insira sim e selecione Enter.

  3. Quando for solicitado, forneça sua senha.

  4. O Ubuntu exibe uma mensagem de boas-vindas e, em seguida, você deve ver um prompt como <username>@<machinename>:~$.

Baixar certificados do Key Vault

Anteriormente neste artigo, carregamos certificados no Key Vault para disponibilizá-los para nosso dispositivo IoT Edge e nosso dispositivo downstream. O dispositivo downstream usa o dispositivo IoT Edge como um gateway para se comunicar com o Hub IoT.

Lidaremos com o dispositivo downstream mais adiante no tutorial. Nesta seção, baixe os certificados para o dispositivo IoT Edge.

  1. Na sessão SSH na máquina virtual do Linux, entre no Azure usando a interface de linha de comando do Azure.

    az login
    
  2. Você será instruído a abrir um navegador para uma página de entrada de dispositivo da Microsoft e fornecer um código exclusivo. Você pode executar essas etapas em seu computador local. Feche a janela do navegador quando terminar de autenticar.

  3. Quando você se autenticar com êxito, a VM do Linux entrará e listará suas assinaturas do Azure.

  4. Defina a assinatura do Azure que você deseja usar para comandos da CLI do Azure.

    az account set --subscription <subscriptionId>
    
  5. Crie um diretório na VM para os certificados.

    sudo mkdir /edgeMlCertificates
    
  6. Baixe os certificados armazenados no cofre de chaves: new-edge-device-full-chain.cert.pem, new-edge-device.key.pem e azure-iot-test-only.root.ca.cert.pem.

    key_vault_name="<key vault name>"
    sudo az keyvault secret download --vault-name $key_vault_name --name new-edge-device-full-chain-cert-pem -f /edgeMlCertificates/new-edge-device-full-chain.cert.pem
    sudo az keyvault secret download --vault-name $key_vault_name --name new-edge-device-key-pem -f /edgeMlCertificates/new-edge-device.key.pem
    sudo az keyvault secret download --vault-name $key_vault_name --name azure-iot-test-only-root-ca-cert-pem -f /edgeMlCertificates/azure-iot-test-only.root.ca.cert.pem
    

Atualizar a configuração do dispositivo IoT Edge

O runtime do IoT Edge usa o arquivo /etc/iotedge/config.yaml para manter sua configuração. Precisamos atualizar duas informações neste arquivo:

  • Certificados: os certificados a serem usados para conexões feitas com dispositivos downstream
  • hostname: O nome de domínio totalmente qualificado (FQDN) do dispositivo IoT Edge da VM

Atualize os certificados e o nome do host editando diretamente o arquivo config.yaml.

  1. Abra o arquivo config.yaml.

    sudo nano /etc/iotedge/config.yaml
    
  2. Atualize a seção certificados do arquivo config.yaml removendo o # à esquerda e definindo o caminho para que o arquivo se pareça com o seguinte exemplo:

    certificates:
      device_ca_cert: "/edgeMlCertificates/new-edge-device-full-chain.cert.pem"
      device_ca_pk: "/edgeMlCertificates/new-edge-device.key.pem"
      trusted_ca_certs: "/edgeMlCertificates/azure-iot-test-only.root.ca.cert.pem"
    

    Certifique-se de que os certificados na linha : não tenham espaço em branco anterior e que cada um dos certificados aninhados esteja com dois espaços de recuo.

    Clicar com o botão direito do mouse no editor nano colará o conteúdo da sua área de transferência na posição atual do cursor. Para substituir a cadeia de caracteres, use as setas de teclado para ir para a cadeia de caracteres que você deseja substituir, exclua a cadeia de caracteres e clique com o botão direito do mouse para colar do buffer.

  3. No portal do Azure, acesse sua máquina virtual. Copie o nome DNS (FQDN do computador) da seção Visão geral.

  4. Cole o FQDN na seção nome do host do arquivo config.yml. Verifique se o nome está todo em letras minúsculas.

    hostname: '<machinename>.<region>.cloudapp.azure.com'
    
  5. Salve e feche o arquivo selecionando Ctrl+X, Ye Enter.

  6. Reinicie o daemon do IoT Edge.

    sudo systemctl restart iotedge
    
  7. Verifique o status do daemon do IoT Edge. Após o comando, insira :q para sair.

    systemctl status iotedge
    

Resolução de problemas

Se vir erros (texto colorido prefixado com "[ERRO]") no status, examine os logs do daemon para ver informações de erro detalhadas.

journalctl -u iotedge --no-pager --no-full

Para obter mais informações sobre como resolver erros, confira a página solução de problemas.

Limpar os recursos

Este tutorial faz parte de um conjunto em que cada artigo se baseia no trabalho feito nas anteriores. Aguarde para limpar todos os recursos até concluir o tutorial final.

Próximas etapas

Acabamos de concluir a configuração de uma VM do Azure como um gateway transparente do IoT Edge. Começamos gerando certificados de teste que carregamos no Key Vault. Em seguida, usamos um script e um modelo do Resource Manager para implantar a VM com a imagem de runtime do Ubuntu Server 16.04 LTS + Azure IoT Edge do Azure Marketplace. Com a VM em execução, nos conectamos via SSH. Em seguida, entramos no Azure e baixamos certificados do Key Vault. Fizemos várias atualizações na configuração do runtime do IoT Edge atualizando o arquivo config.yaml.

Continue para o próximo artigo para criar módulos do IoT Edge.