Tutorial: Configurar um dispositivo do Azure IoT Edge
Aplica-se a: 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.
Inicie sessão na 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 a partir do menu Iniciar do Windows.
Abra o Visual Studio Code.
Selecione Ficheiro>Abrir Pasta e, em seguida, selecione C:\source\IoTEdgeAndMlSample\CreateCertificates.
No painel Explorador , clique com o botão direito do rato em dockerfile e selecione CompilarImagem.
Na caixa de diálogo, aceite o valor predefinido para o nome e etiqueta da imagem: createcertificates: latest.
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.
Na janela de terminal do Visual Studio Code, execute o contentor createcertificates.
docker run --name createcertificates --rm -v c:\edgeCertificates:/edgeCertificates createcertificates /edgeCertificates
O Docker pedirá acesso à unidade c: \. Selecione Partilhar.
Indique as suas credenciais quando lhe for pedido.
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.
A partir do portal do Azure, aceda à sua área de trabalho do Azure Machine Learning.
Na página de descrição geral da área de trabalho do Machine Learning, localize o nome para Key Vault.
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>
Se lhe for pedido, inicie sessão no Azure.
O script será executado durante alguns minutos com o resultado que lista as novas entradas de Key Vault.
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.
No seu computador de desenvolvimento, abra o Visual Studio Code.
Expanda a moldura Hub IoT do Azure a partir da vista Explorador do Visual Studio Code.
Selecione as reticências e selecione Criar IoT Edge Dispositivo.
Atribua um nome ao dispositivo. Para sua comodidade, utilizamos o nome aaTurbofanEdgeDevice para que este seja classificado para a parte superior dos dispositivos listados.
O novo dispositivo aparece na lista de dispositivos.
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
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: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. 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.
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.
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
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>
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.
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.
Na sessão SSH na máquina virtual do Linux, inicie sessão no Azure com a CLI do Azure.
az login
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.
Quando efetuar a autenticação com êxito, a VM do Linux iniciará sessão e listará as suas subscrições do Azure.
Defina a subscrição do Azure que pretende utilizar para os comandos da CLI do Azure.
az account set --subscription <subscriptionId>
Crie um diretório na VM para os certificados.
sudo mkdir /edgeMlCertificates
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.
Abra o ficheiro config.yaml.
sudo nano /etc/iotedge/config.yaml
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.
Na portal do Azure, aceda à máquina virtual. Copie o nome DNS (FQDN do computador) da secção Descrição geral .
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'
Guarde e feche o ficheiro ao selecionar Ctrl+X, Y e Enter.
Reinicie o daemon IoT Edge.
sudo systemctl restart iotedge
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.