Partilhar via


Tutorial: Configurar um dispositivo do Azure IoT Edge

Aplica-se a:sim ícone IoT Edge 1.1

Importante

IoT Edge 1,1 data de fim do suporte foi 13 de dezembro de 2022. Consulte o Ciclo de Vida de Produtos da Microsoft para obter informações sobre como é suportado este produto, serviço, tecnologia ou API. Para obter mais informações sobre como atualizar para a versão mais recente do IoT Edge, consulte Atualizar IoT Edge.

Neste artigo, configuramos uma máquina virtual do Azure a executar o Linux para ser um dispositivo IoT Edge do Azure que funciona como um gateway transparente. Uma configuração de gateway transparente permite que os dispositivos se liguem a Hub IoT do Azure através do gateway sem saberem que o gateway existe. Ao mesmo tempo, um utilizador que interaja com os dispositivos no Hub IoT desconhece o dispositivo de gateway intermédio. Em última análise, vamos adicionar análises edge ao nosso sistema ao adicionar IoT Edge módulos ao gateway transparente.

Nota

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

Normalmente, os passos neste artigo são realizados por um programador da cloud.

Nesta secção do tutorial, vai aprender a:

  • Crie certificados para permitir que o seu dispositivo de gateway se ligue de forma segura aos seus dispositivos a jusante.
  • Criar um dispositivo IoT Edge.
  • Crie uma máquina virtual do Azure para simular o seu dispositivo IoT Edge.

Pré-requisitos

Este artigo faz parte de uma série de tutoriais sobre como utilizar o Azure Machine Learning no IoT Edge. Cada artigo da série baseia-se no trabalho no artigo anterior. Se chegou diretamente a este artigo, consulte o primeiro artigo da série.

Criar certificados

Para um dispositivo funcionar como um gateway, tem de se ligar de forma segura a dispositivos a jusante. Com IoT Edge, pode utilizar uma infraestrutura de chaves públicas (PKI) para configurar ligações seguras entre dispositivos. Neste caso, estamos a permitir que um dispositivo IoT a jusante se ligue a um dispositivo IoT Edge que funciona como um gateway transparente. Para manter uma segurança razoável, o dispositivo a jusante deve confirmar a identidade do dispositivo IoT Edge. Para obter mais informações sobre como IoT Edge dispositivos utilizam certificados, veja Detalhes de utilização de certificados do Azure IoT Edge.

Nesta secção, vamos criar os certificados autoassinados com uma imagem do Docker que, em seguida, compilamos e executamos. Optámos por utilizar uma imagem do Docker para concluir este passo porque reduz o número de passos necessários para criar os certificados no computador de desenvolvimento do Windows. Para compreender o que automatizámos com a imagem do Docker, veja Criar certificados de demonstração para testar IoT Edge funcionalidades do dispositivo.

  1. Inicie sessão na 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 o Docker para Windows a partir do menu Iniciar do Windows.

  4. Abra o Visual Studio Code.

  5. Selecione Ficheiro>Abrir Pasta e, em seguida, selecione C:\source\IoTEdgeAndMlSample\CreateCertificates.

  6. No painel Explorador , clique com o botão direito do rato em dockerfile e selecione CompilarImagem.

  7. Na caixa de diálogo, aceite o valor predefinido para o nome e etiqueta da imagem: createcertificates: latest.

    Captura de ecrã que mostra a criação de certificados no Visual Studio Code.

  8. Aguarde pela conclusão da compilação.

    Nota

    Poderá ver um aviso sobre uma chave pública em falta. É seguro ignorar este aviso. Da mesma forma, verá um aviso de segurança que recomenda que verifique ou reponha as permissões na sua imagem, o que é seguro ignorar para esta imagem.

  9. Na janela de terminal do Visual Studio Code, execute o contentor createcertificates.

    docker run --name createcertificates --rm -v c:\edgeCertificates:/edgeCertificates createcertificates /edgeCertificates
    
  10. O Docker pedirá acesso à unidade c: \. Selecione Partilhar.

  11. Indique as suas credenciais quando lhe for pedido.

  12. Após a execução do contentor, verifique se existem os seguintes ficheiros em 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 para o Azure Key Vault

Para armazenar os nossos certificados de forma segura e torná-los acessíveis a partir de vários dispositivos, iremos carregar os certificados para o Azure Key Vault. Como pode ver na lista anterior, temos dois tipos de ficheiros de certificado: PFX e PEM. Trataremos o ficheiro PFX como Key Vault certificados a carregar para Key Vault. Os ficheiros PEM são texto simples e vamos tratá-los como segredos Key Vault. Vamos utilizar a Key Vault instância associada à área de trabalho do Azure Machine Learning que criámos ao executar os blocos de notas do Jupyter.

  1. A partir do portal do Azure, aceda à sua área de trabalho do Azure Machine Learning.

  2. Na página de descrição geral da área de trabalho do Machine Learning, localize o nome para Key Vault.

    Captura de ecrã que mostra a cópia do nome do cofre de chaves.

  3. No computador de desenvolvimento, carregue os certificados para Key Vault. Substitua <subscriptionId> e <keyvaultname> pelas informações do recurso.

    c:\source\IoTEdgeAndMlSample\CreateCertificates\upload-keyvaultcerts.ps1 -SubscriptionId <subscriptionId> -KeyVaultName <keyvaultname>
    
  4. Se lhe for pedido, inicie sessão no Azure.

  5. O script será executado durante alguns minutos com o resultado que lista as novas entradas de Key Vault.

    Captura de ecrã que mostra Key Vault saída do script.

Registar um dispositivo do IoT Edge

Para ligar um dispositivo do Azure IoT Edge a um hub IoT, primeiro registamos um dispositivo no hub. Pegamos na cadeia de ligação da identidade do dispositivo na cloud e utilizamo-la para configurar o runtime no nosso dispositivo IoT Edge. Depois de um dispositivo configurado se ligar ao hub, podemos implementar módulos e enviar mensagens. Também podemos alterar a configuração do dispositivo de IoT Edge físico ao alterar a respetiva identidade de dispositivo correspondente no Hub IoT.

Neste tutorial, vamos registar a nova identidade do dispositivo com o Visual Studio Code. Também pode concluir estes passos com o portal do Azure ou a CLI do Azure. Independentemente do método que escolher, certifique-se de que obtém a cadeia de ligação do dispositivo do seu dispositivo IoT Edge. A cadeia de ligação do dispositivo pode ser encontrada na página de detalhes do seu dispositivo no portal do Azure.

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

  2. Expanda a moldura Hub IoT do Azure a partir da vista Explorador do Visual Studio Code.

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

  4. Atribua um nome ao dispositivo. Para sua comodidade, utilizamos o nome aaTurbofanEdgeDevice para que este seja classificado para a parte superior dos dispositivos listados.

  5. O novo dispositivo aparece na lista de dispositivos.

    Captura de ecrã a mostrar uma vista do dispositivo no Explorador do Visual Studio Code.

Implementar uma máquina virtual do Azure

Utilizamos uma máquina virtual Ubuntu 18.04 LTS com o Azure IoT Edge runtime instalado e configurado. A implementação utiliza um modelo de Resource Manager do Azure mantido no repositório do projeto iotedge-vm-deploy. Aprovisiona a IoT Edge dispositivo que registou no passo anterior com a cadeia de ligação que fornecer no modelo.

Pode implementar a máquina virtual com o portal do Azure ou a CLI do Azure. Mostraremos os passos de portal do Azure. Veja Executar o Azure IoT Edge no Ubuntu Máquinas Virtuais para obter mais informações.

Implementar com o Botão Implementar no Azure

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

    Botão Implementar no Azure iotedge-vm-deploy

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

    Campo Descrição
    Subscrição A subscrição ativa do Azure para implementar a máquina virtual.
    Grupo de recursos Um Grupo de Recursos existente ou recentemente criado para conter a máquina virtual e os recursos associados.
    Prefixo de Etiqueta DNS Um valor necessário à sua escolha que é utilizado para prefixar o nome do anfitrião da máquina virtual.
    Administração Nome de Utilizador Um nome de utilizador, ao qual serão fornecidos privilégios de raiz na implementação.
    Cadeia de Ligação de Dispositivo Uma cadeia de ligação de dispositivo para um dispositivo que foi criado no Hub IoT pretendido.
    Tamanho da VM O tamanho da máquina virtual a implementar
    Versão do SO do Ubuntu A versão do SO Ubuntu a ser instalada na máquina virtual base.
    Localização A região geográfica na qual implementar a máquina virtual, este valor é predefinido para a localização do Grupo de Recursos selecionado.
    Tipo de Autenticação Escolha sshPublicKey ou palavra-passe consoante a sua preferência.
    Administração Palavra-passe ou Chave O valor da Chave Pública SSH ou o valor da palavra-passe, consoante a escolha do Tipo de Autenticação.
  3. Quando todos os campos tiverem sido preenchidos, selecione a caixa de verificação na parte inferior da página para aceitar os termos e selecione Rever + criar e Criar para iniciar a implementação.

  4. Navegue para a máquina virtual no portal do Azure. Pode encontrá-lo através do grupo de recursos ou ao selecionar Máquinas virtuais em Serviços do Azure na página de destino do portal.

  5. Anote o nome DNS da sua máquina virtual. Precisará dele para iniciar sessão na sua máquina virtual.

Ligar ao seu dispositivo IoT Edge

  1. Abra uma linha de comandos e utilize o seguinte comando para iniciar sessão na máquina virtual. Introduza as suas próprias informações para o nome de utilizador e o nome DNS com base na secção anterior.

    ssh <adminUsername>@<DNS_name>
    
  2. Quando lhe for pedido para validar a autenticidade do anfitrião, introduza sim e selecione Enter.

  3. Quando lhe for pedido, forneça a sua palavra-passe.

  4. O Ubuntu apresenta uma mensagem de boas-vindas e, em seguida, deverá ver um pedido como <username>@<machinename>:~$.

Transferir certificados de Key Vault

Anteriormente neste artigo, carregámos certificados para Key Vault para os disponibilizar para o nosso dispositivo IoT Edge e para o nosso dispositivo a jusante. O dispositivo a jusante utiliza o dispositivo IoT Edge como um gateway para comunicar com Hub IoT.

Iremos lidar com o dispositivo a jusante mais tarde no tutorial. Nesta secção, transfira os certificados para o dispositivo IoT Edge.

  1. Na sessão SSH na máquina virtual do Linux, inicie sessão no Azure com a CLI do Azure.

    az login
    
  2. Ser-lhe-á pedido para abrir um browser numa página de início de sessão do dispositivo Microsoft e fornecer um código exclusivo. Pode efetuar estes passos no seu computador local. Feche a janela do browser quando terminar a autenticação.

  3. Quando efetuar a autenticação com êxito, a VM do Linux iniciará sessão e listará as suas subscrições do Azure.

  4. Defina a subscrição do Azure que pretende utilizar para os comandos da CLI do Azure.

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

    sudo mkdir /edgeMlCertificates
    
  6. Transfira os certificados que armazenou 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 IoT Edge runtime utiliza o ficheiro /etc/iotedge/config.yaml para manter a configuração. Precisamos de atualizar duas informações neste ficheiro:

  • Certificados: os certificados a utilizar para ligações efetuadas com dispositivos a jusante
  • Nome do anfitrião: o nome de domínio completamente qualificado (FQDN) da VM IoT Edge dispositivo

Atualize os certificados e o nome do anfitrião ao editar diretamente o ficheiro config.yaml.

  1. Abra o ficheiro config.yaml.

    sudo nano /etc/iotedge/config.yaml
    
  2. Atualize a secção de certificados do ficheiro config.yaml removendo a esquerda # e definindo o caminho para que o ficheiro 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: a linha não tem espaço em branco anterior e que cada um dos certificados aninhados tem um avanço de dois espaços.

    Clicar com o botão direito do rato no nano irá colar os conteúdos da área de transferência na posição atual do cursor. Para substituir a cadeia, utilize as setas de teclado para aceder à cadeia que pretende substituir, elimine a cadeia e, em seguida, clique com o botão direito do rato para colar a partir da memória intermédia.

  3. Na portal do Azure, aceda à máquina virtual. Copie o nome DNS (FQDN do computador) da secção Descrição geral .

  4. Cole o FQDN na secção hostname do ficheiro config.yml. Certifique-se de que o nome está todo em minúsculas.

    hostname: '<machinename>.<region>.cloudapp.azure.com'
    
  5. Guarde e feche o ficheiro ao selecionar Ctrl+X, Y e Enter.

  6. Reinicie o daemon IoT Edge.

    sudo systemctl restart iotedge
    
  7. Verifique o estado do daemon IoT Edge. Depois do comando, introduza :q para sair.

    systemctl status iotedge
    

Resolução de problemas

Se vir erros (texto colorido com o prefixo "[ERROR]") no estado, examine os registos do daemon para obter informações detalhadas sobre o erro.

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

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

Limpar os recursos

Este tutorial faz parte de um conjunto em que cada artigo baseia-se no trabalho realizado nos anteriores. Aguarde até concluir o tutorial final.

Passos seguintes

Acabámos de concluir a configuração de uma VM do Azure como um gateway transparente IoT Edge. Começámos por gerar certificados de teste que carregámos para Key Vault. Em seguida, utilizámos um script e Resource Manager modelo para implementar a VM com o Ubuntu Server 16.04 LTS + Azure IoT Edge imagem de runtime do Azure Marketplace. Com a VM operacional, ligámo-nos através de SSH. Em seguida, iniciou sessão no Azure e transferimos certificados do Key Vault. Fizemos várias atualizações à configuração do IoT Edge runtime ao atualizar o ficheiro config.yaml.

Avance para o artigo seguinte para criar IoT Edge módulos.