Tutorial: Configurar um dispositivo do Azure IoT Edge
Aplica-se a: IoT Edge 1.1
Importante
A data de fim do suporte do IoT Edge 1.1 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 o IoT Edge.
Neste artigo, configuramos uma máquina virtual do Azure executando 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 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. Em última análise, adicionaremos análise de borda ao nosso sistema adicionando módulos IoT Edge ao gateway transparente.
Nota
Os conceitos neste tutorial se aplicam a todas as versões do IoT Edge, mas o dispositivo de exemplo que você cria para experimentar o cenário executa o IoT Edge versão 1.1.
As etapas neste artigo geralmente 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 de tutoriais sobre como usar o Azure Machine Learning no IoT Edge. Cada artigo da série baseia-se no trabalho do artigo anterior. Se você chegou a este artigo diretamente, veja o primeiro artigo da 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 atuando 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 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, em seguida, criamos e executamos. Optamos por usar uma imagem do Docker para concluir esta etapa porque ela reduz o número de etapas necessárias para criar os certificados na máquina 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.
Entre na sua VM de desenvolvimento.
Crie uma nova pasta com o caminho e o nome c:\edgeCertificates.
Se ainda não estiver em execução, inicie o Docker para Windows no menu Iniciar do Windows.
Abra o Visual Studio Code.
Selecione Pasta de abertura de arquivo>e, em seguida, selecione C:\source\IoTEdgeAndMlSample\CreateCertificates.
No painel Explorer, clique com o botão direito do mouse em dockerfile e selecione Build Image.
Na caixa de diálogo, aceite o valor padrão para o nome da imagem e a tag: createcertificates: latest.
Aguarde a conclusão da compilação.
Nota
Poderá ver um aviso sobre uma chave pública em falta. É seguro ignorar este aviso. Da mesma forma, você verá um aviso de segurança que recomenda que você verifique ou redefina as permissões em sua imagem, o que é seguro ignorar para esta imagem.
Na janela do terminal do Visual Studio Code, execute o contêiner createcertificates.
docker run --name createcertificates --rm -v c:\edgeCertificates:/edgeCertificates createcertificates /edgeCertificates
O Docker solicitará acesso à unidade c:\ . Selecione Compartilhar.
Forneça suas credenciais quando solicitado.
Depois que o contêiner terminar de ser executado, verifique 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
Carregar certificados no Azure Key Vault
Para armazenar nossos certificados com segurança e torná-los acessíveis a partir de vários dispositivos, carregaremos os certificados no Cofre da Chave do Azure. 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 ficheiros PEM são de texto simples e iremos tratá-los como segredos do Key Vault. Usaremos a instância do Cofre da Chave associada ao espaço de trabalho do Azure Machine Learning que criamos executando os blocos de anotações do Jupyter.
No portal do Azure, vá para seu espaço de trabalho do Azure Machine Learning.
Na página de visão geral do espaço de trabalho Aprendizado de Máquina, localize o nome do Cofre da Chave.
Na sua máquina de desenvolvimento, carregue os certificados para o Cofre da Chave. Substitua <subscriptionId> e <keyvaultname> pelas informações do recurso.
c:\source\IoTEdgeAndMlSample\CreateCertificates\upload-keyvaultcerts.ps1 -SubscriptionId <subscriptionId> -KeyVaultName <keyvaultname>
Se lhe for pedido, inicie sessão no Azure.
O script será executado por alguns minutos com saída que lista as novas entradas do Cofre da Chave.
Registar um dispositivo do IoT Edge
Para conectar um dispositivo do Azure IoT Edge a um hub IoT, primeiro registramos um dispositivo no hub. Pegamos a cadeia de conexão da identidade do dispositivo na nuvem e a usamos para configurar o tempo de execução 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 IoT Edge físico 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, certifique-se de obter a cadeia de conexão do dispositivo do seu dispositivo IoT Edge. A cadeia de conexão do dispositivo pode ser encontrada na página de detalhes do seu dispositivo no portal do Azure.
Em sua máquina de desenvolvimento, abra o Visual Studio Code.
Expanda o quadro do Hub IoT do Azure a partir do modo de exibição do Visual Studio Code Explorer .
Selecione as reticências e selecione Criar dispositivo IoT Edge.
Dê um nome ao dispositivo. Por conveniência, usamos o nome aaTurbofanEdgeDevice para que ele classifique no topo dos dispositivos listados.
O novo dispositivo aparece na lista de dispositivos.
Implantar uma máquina virtual do Azure
Usamos uma máquina virtual Ubuntu 18.04 LTS com o tempo de execução do Azure IoT Edge instalado e configurado. A implantação usa um modelo do Azure Resource Manager mantido no repositório de projetos 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 Ubuntu para obter mais informações.
Implantar usando o botão Implantar no Azure
Para usar o
iotedge-vm-deploy
modelo ARM para implantar sua máquina virtual Ubuntu 18.04 LTS, clique no botão abaixo:Na janela recém-lançada, preencha os campos de formulário disponíveis.
Campo Descrição Subscrição A assinatura ativa do Azure para implantar a máquina virtual. Grupo de recursos Um Grupo de Recursos existente ou recém-criado para conter a máquina virtual e seus recursos associados. Prefixo de rótulo DNS Um valor necessário de sua escolha que é usado para prefixar o nome do host da máquina virtual. Nome de usuário do administrador Um nome de usuário, que receberá privilégios de root na implantação. Cadeia de Ligação de Dispositivo Uma cadeia de conexão de dispositivo para um dispositivo que foi criado dentro do Hub IoT pretendido. Tamanho da VM O tamanho da máquina virtual a ser implantada Versão do Ubuntu OS A versão do sistema operacional Ubuntu a ser instalada na máquina virtual base. Location A região geográfica na qual a máquina virtual será implantada, esse valor assume como padrão o local do Grupo de Recursos selecionado. Tipo de Autenticação Escolha sshPublicKey ou senha , dependendo da sua preferência. Palavra-passe ou chave de administrador O valor da Chave Pública SSH ou o valor da senha, dependendo da escolha do Tipo de Autenticação. 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 Revisar + criar e Criar para iniciar a implantação.
Navegue até sua máquina virtual no portal do Azure. Você pode encontrá-lo por meio de seu grupo de recursos ou selecionando Máquinas virtuais em Serviços do Azure na página inicial do portal.
Anote o nome DNS da sua máquina virtual. Você precisará dele para fazer logon em sua máquina virtual.
Conecte-se ao seu dispositivo IoT Edge
Abra um prompt de comando e use o seguinte comando 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>
Quando lhe for pedido para validar a autenticidade do anfitrião, introduza sim e selecione Enter.
Quando lhe for pedido, forneça a sua palavra-passe.
Ubuntu exibe uma mensagem de boas-vindas, e então você deve ver um prompt como
<username>@<machinename>:~$
.
Baixar certificados do Key Vault
No início deste 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.
Trataremos do dispositivo a jusante mais adiante no tutorial. Nesta seção, baixe os certificados para o dispositivo IoT Edge.
A partir da sessão SSH na máquina virtual Linux, inicie sessão no Azure com a CLI do Azure.
az login
Ser-lhe-á pedido para abrir um browser para uma página de início de sessão num dispositivo Microsoft e fornecer um código exclusivo. Você pode executar essas etapas em sua máquina local. Feche a janela do navegador quando terminar de autenticar.
Quando você se autenticar com êxito, a VM do Linux entrará e listará suas assinaturas do Azure.
Defina a assinatura do Azure que você deseja usar para comandos da CLI do Azure.
az account set --subscription <subscriptionId>
Crie um diretório na VM para os certificados.
sudo mkdir /edgeMlCertificates
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 tempo de execução 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 a jusante
- Nome do host: o nome de domínio totalmente qualificado (FQDN) do dispositivo VM IoT Edge
Atualize os certificados e o nome do host editando diretamente o arquivo config.yaml.
Abra o arquivo config.yaml.
sudo nano /etc/iotedge/config.yaml
Atualize a seção de certificados do arquivo config.yaml removendo a entrelinha # e definindo o caminho para que o arquivo se pareça com o exemplo a seguir:
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 certificados: não tem espaço em branco anterior e se cada um dos certificados aninhados é recuado por dois espaços.
Clicar com o botão direito do rato em nano irá colar o conteúdo da área de transferência na posição atual do cursor. Para substituir a cadeia de caracteres, utilize as setas do teclado para aceder à cadeia de caracteres que pretende substituir, elimine a cadeia de caracteres e, em seguida, clique com o botão direito do rato para colar a partir da memória intermédia.
No portal do Azure, vá para sua máquina virtual. Copie o nome DNS (FQDN da máquina) da seção Visão geral .
Cole o FQDN na seção hostname do arquivo config.yml. Certifique-se de que o nome é todo minúsculo.
hostname: '<machinename>.<region>.cloudapp.azure.com'
Salve e feche o arquivo selecionando Ctrl+X, Y e Enter.
Reinicie o daemon do IoT Edge.
sudo systemctl restart iotedge
Verifique o status do daemon do IoT Edge. Após o comando, digite :q para sair.
systemctl status iotedge
Resolução de Problemas
Se você vir erros (texto colorido prefixado com "[ERROR]") no status, examine os logs de daemon para obter informações detalhadas sobre erros.
journalctl -u iotedge --no-pager --no-full
Para obter mais informações sobre como resolver erros, consulte a página de solução de problemas .
Clean up resources (Limpar recursos)
Este tutorial faz parte de um conjunto onde cada artigo se baseia no trabalho realizado nos anteriores. Aguarde para limpar todos os recursos até concluir o tutorial final.
Próximos passos
Acabamos de concluir a configuração de uma VM do Azure como um gateway transparente do IoT Edge. Começámos por gerar certificados de teste que carregámos para o Key Vault. Em seguida, usamos um script e um modelo do Gerenciador de Recursos para implantar a VM com a imagem de tempo de execução do Ubuntu Server 16.04 LTS + Azure IoT Edge do Azure Marketplace. Com a VM em funcionamento, conectamos via SSH. Em seguida, entramos no Azure e baixamos certificados do Cofre da Chave. Fizemos várias atualizações na configuração do tempo de execução do IoT Edge atualizando o arquivo config.yaml.
Continue para o próximo artigo para criar módulos do IoT Edge.