Compartilhar via


Tutorial: Configurar um dispositivo do Azure IoT Edge

Aplica-se a: ícone sim IoT Edge 1.1

Importante

IoT Edge 1.1 a 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 Atualizar o IoT Edge.

Neste artigo, configuramos uma máquina virtual do Azure que executa o Linux para ser um dispositivo do Azure IoT Edge que atua como um gateway transparente. Uma configuração de gateway transparente permite que os dispositivos conectem-se 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 desconhece o dispositivo de gateway intermediário. Por fim, adicionaremos análise de borda ao nosso sistema adicionando módulos do IoT Edge ao gateway transparente.

Observação

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

As etapas deste artigo normalmente são realizadas por um desenvolvedor de nuvem.

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

  • Criar certificados para permitir que o dispositivo de gateway se conecte com segurança aos dispositivos downstream.
  • Criar um dispositivo IoT Edge.
  • Criar uma máquina virtual do Azure para simular o 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 se baseia no trabalho do artigo anterior. Se você chegou a este artigo diretamente, veja o primeiro artigo da série.

Criar certificados

Para um dispositivo funcionar como gateway, ele precisa se conectar com segurança aos dispositivos downstream. Com o IoT Edge, você pode usar uma PKI (infraestrutura de chave pública) para configurar conexões seguras entre dispositivos. Neste caso, nós estamos permitindo um dispositivo IoT downstream conectar-se a um dispositivo IoT Edge atuando como um gateway transparente. Para manter uma segurança razoável, o dispositivo downstream deve confirmar a identidade do dispositivo IoT Edge. Para saber mais sobre como os dispositivos IoT Edge usam certificados, confira 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 esta etapa pois ela reduz o número de etapas necessárias para criar os certificados no computador de desenvolvimento do Windows. Para saber o que automatizamos com a imagem do Docker, confira Criar certificados de demonstração para testar os recursos do dispositivo IoT Edge.

  1. Entre na VM de desenvolvimento.

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

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

  4. Abra o Visual Studio Code.

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

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

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

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

  8. Aguarde a conclusão do build.

    Observação

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

  9. Na janela de 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 c:\. Selecione Compartilhar isso.

  11. Forneça suas credenciais quando solicitado.

  12. Após concluída a execução do contêiner, verifique se há os seguintes arquivos 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

Fazer upload de certificados para o Azure Key Vault

Para armazenar nossos certificados com segurança e torná-los acessíveis em vários dispositivos, faremos upload deles 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 para o 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 por meio da execução dos 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 a cópia do nome do cofre de chaves.

  3. Em seu computador de desenvolvimento, faça upload dos certificados para o Key Vault. Substitua <subscriptionId> e <keyvaultname> pelas informações do recurso.

    c:\source\IoTEdgeAndMlSample\CreateCertificates\upload-keyvaultcerts.ps1 -SubscriptionId <subscriptionId> -KeyVaultName <keyvaultname>
    
  4. Caso seja solicitado, entre no Azure.

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

    Captura de tela que mostra a saída de 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. Extraímos a cadeia de conexão da identidade do dispositivo na nuvem e a usamos para configurar o runtime em seu dispositivo IoT Edge. Após um dispositivo configurado se conectar ao hub, podemos implantar módulos e enviar mensagens. Também podemos alterar a configuração do dispositivo IoT Edge físico alterando a identidade do dispositivo correspondente no Hub IoT.

Para este tutorial, criamos a identidade do dispositivo usando o Visual Studio Code. Também é possível realizar essas etapas usando o portal do Azure ou a CLI do Azure. Seja qual for o método escolhido, obtenha a cadeia de conexão do seu dispositivo do IoT Edge. A cadeia de conexão do dispositivo pode ser encontrada na página de detalhes do seu dispositivo no portal do Azure.

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

  2. Expanda o quadro do Hub IoT do Azure na exibição do Explorer do Visual Studio Code.

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

  4. Dê ao dispositivo um nome. 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 Explorer do Visual Studio Code.

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 de projeto iotedge-vm-deploy. Ela provisiona o dispositivo do 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 no portal do Azure. Confira Executar o Azure IoT Edge em máquinas virtuais 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 Implantar no Azure para iotedge-vm-deploy

  2. Na janela recém-criada, 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 obterá privilégios de raiz na implantação.
    Cadeia de conexão do dispositivo Uma cadeia de conexão do dispositivo para um dispositivo criado no Hub IoT pretendido.
    Tamanho da VM O tamanho da máquina virtual que será implantada
    Versão do sistema operacional Ubuntu A versão do sistema operacional Ubuntu que será instalada na máquina virtual de base.
    Localidade 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. Após preencher os campos, 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é a sua máquina virtual no portal do Azure. Você pode encontrá-la por meio de seu grupo de recursos ou selecionando Máquinas virtuais em Serviços do Azure na página de aterrissagem do portal.

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

Conectar-se ao dispositivo do IoT Edge

  1. Abra um prompt de comando e use o comando a seguir para fazer logon em sua máquina virtual. Insira suas 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, digite yes e selecione Enter.

  3. Quando solicitado, forneça a senha.

  4. O Ubuntu exibe uma mensagem de boas-vindas e você verá um prompt semelhante a <username>@<machinename>:~$.

Baixar certificados do Azure 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 de downstream posteriormente no tutorial. Nesta seção, baixe os certificados para o dispositivo IoT Edge.

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

    az login
    
  2. Será solicitado que você abra um navegador em uma página de Entrada do dispositivo da Microsoft e forneça um código exclusivo. É possível executar estas etapas em seu computador local. Feche a janela do navegador quando terminar a autenticação.

  3. Quando você se autenticar com êxito, a VM Linux será conectada e listará as assinaturas do Azure.

  4. Defina a assinatura do Azure que deseja usar 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. Baixe os certificados que você 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 runtime do IoT Edge usa o arquivo /etc/iotedge/config.yaml para manter usa configuração. É necessário atualizar essas duas informações neste arquivo:

  • Certificados: os certificados a serem usados para conexões realizadas com dispositivos downstream
  • Nome do host: o FQDN (nome de domínio totalmente qualificado) 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 de certificados do arquivo config.yaml removendo o # à esquerda e definindo o caminho de maneira que o arquivo tenha a aparência do 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"
    

    Verifique se a linha certificates: não tem nenhum espaço em branco à direita e se cada um dos certificados aninhados tem um recuo de dois espaços.

    Clicar com o botão direito do mouse em nano colará o conteúdo de sua área de transferência na posição atual do cursor. Para substituir a cadeia de caracteres, use as setas do teclado para navegar até a cadeia de caracteres que 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, vá para sua máquina virtual. Copie o nome DNS (FQDN do computador) da seção Visão geral.

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

    hostname: '<machinename>.<region>.cloudapp.azure.com'
    
  5. Salve e feche o arquivo selecionando Ctrl + X, Y e 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, digite :q para sair.

    systemctl status iotedge
    

Soluçã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 os erros de endereçamento, confira a página de solução de problemas.

Limpar recursos

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

Próximas etapas

Acabamos de concluir a configuração de uma VM do Azure como gateway transparente do IoT Edge. Começamos gerando certificados de teste que carregamos para o Key Vault. Em seguida, usamos um script e um modelo do Resource Manager para implantar a VM com a imagem do runtime do Azure IoT Edge + Ubuntu Server 16.04 LTS do Azure Marketplace. Com a VM em funcionamento, 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.

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