Criar e aprovisionar um dispositivo IoT Edge no Linux com chaves simétricas
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.
Este artigo fornece instruções ponto a ponto para registar e aprovisionar um dispositivo linux IoT Edge, incluindo a instalação de IoT Edge.
Todos os dispositivos que se ligam a um hub IoT têm um ID de dispositivo que é utilizado para monitorizar comunicações da cloud para o dispositivo ou do dispositivo para a cloud. Configure um dispositivo com as respetivas informações de ligação, incluindo o nome do anfitrião do hub IoT, o ID do dispositivo e as informações que o dispositivo utiliza para autenticar para Hub IoT.
Os passos neste artigo explicam um processo chamado aprovisionamento manual, onde liga um único dispositivo ao respetivo hub IoT. Para o aprovisionamento manual, tem duas opções para autenticar dispositivos IoT Edge:
Chaves simétricas: quando cria uma nova identidade de dispositivo no Hub IoT, o serviço cria duas chaves. Coloca uma das teclas no dispositivo e esta apresenta a chave para Hub IoT durante a autenticação.
Este método de autenticação é mais rápido de começar, mas não tão seguro.
X.509 autoassinado: cria dois certificados de identidade X.509 e coloca-os no dispositivo. Quando cria uma nova identidade de dispositivo no Hub IoT, fornece thumbprints de ambos os certificados. Quando o dispositivo é autenticado para Hub IoT, apresenta um certificado e Hub IoT verifica se o certificado corresponde ao thumbprint.
Este método de autenticação é mais seguro e recomendado para cenários de produção.
Este artigo aborda a utilização de chaves simétricas como método de autenticação. Se quiser utilizar certificados X.509, veja Criar e aprovisionar um dispositivo IoT Edge no Linux com certificados X.509.
Nota
Se tiver muitos dispositivos para configurar e não quiser aprovisionar manualmente cada um deles, utilize um dos seguintes artigos para saber como IoT Edge funciona com o serviço de aprovisionamento de dispositivos Hub IoT:
Pré-requisitos
Este artigo aborda o registo do seu dispositivo IoT Edge e a instalação de IoT Edge no mesmo. Estas tarefas têm diferentes pré-requisitos e utilitários utilizados para as realizar. Certifique-se de que tem todos os pré-requisitos abrangidos antes de continuar.
Ferramentas de gestão de dispositivos
Pode utilizar a portal do Azure, o Visual Studio Code ou a CLI do Azure para obter os passos para registar o seu dispositivo. Cada utilitário tem os seus próprios pré-requisitos:
Um hub IoT gratuito ou standard na sua subscrição do Azure.
Requisitos dos dispositivos
Um dispositivo X64, ARM32 ou ARM64 Linux.
A Microsoft publica pacotes de instalação para uma variedade de sistemas operativos.
Para obter as informações mais recentes sobre que sistemas operativos são atualmente suportados para cenários de produção, veja Sistemas suportados pelo Azure IoT Edge.
Registar o seu dispositivo
Pode utilizar o portal do Azure, o Visual Studio Code ou a CLI do Azure para registar o seu dispositivo, consoante a sua preferência.
No seu hub IoT no portal do Azure, IoT Edge dispositivos são criados e geridos separadamente dos dispositivos IoT que não estão ativados no Edge.
Inicie sessão no portal do Azure e navegue para o seu hub IoT.
No painel esquerdo, selecione Dispositivos no menu e, em seguida, selecione Adicionar Dispositivo.
Na página Criar um dispositivo , forneça as seguintes informações:
- Crie um ID de dispositivo descritivo. Tome nota deste ID do dispositivo, pois irá utilizá-lo mais tarde.
- Selecione a caixa de verificação IoT Edge Dispositivo.
- Selecione Chave simétrica como o tipo de autenticação.
- Utilize as predefinições para gerar automaticamente chaves de autenticação e ligar o novo dispositivo ao hub.
Selecione Guardar.
Agora que tem um dispositivo registado no Hub IoT, obtenha as informações que utiliza para concluir a instalação e o aprovisionamento do IoT Edge runtime.
Ver dispositivos registados e obter informações de aprovisionamento
Os dispositivos que utilizam a autenticação de chave simétrica precisam das respetivas cadeias de ligação para concluir a instalação e o aprovisionamento do IoT Edge runtime.
Os dispositivos com capacidade edge que se ligam ao seu hub IoT estão listados na página Dispositivos . Pode filtrar a lista por tipo Dispositivo Iot Edge.
Quando estiver pronto para configurar o seu dispositivo, precisa da cadeia de ligação que liga o seu dispositivo físico à respetiva identidade no hub IoT.
Os dispositivos que se autenticam com chaves simétricas têm as respetivas cadeias de ligação disponíveis para copiar no portal.
- Na página Dispositivos no portal, selecione o ID do dispositivo IoT Edge na lista.
- Copie o valor da Cadeia de Ligação Primária ou da Cadeia de Ligação Secundária.
Instalar IoT Edge
Nesta secção, vai preparar a VM do Linux ou o dispositivo físico para IoT Edge. Em seguida, instale IoT Edge.
Execute os seguintes comandos para adicionar o repositório de pacotes e, em seguida, adicione a chave de assinatura do pacote Microsoft à sua lista de chaves fidedignas.
Importante
Em 30 de junho de 2022, Raspberry Pi OS Stretch foi retirado da lista de suporte do SO de Camada 1. Para evitar potenciais vulnerabilidades de segurança, atualize o SO anfitrião para Bullseye.
A instalação pode ser feita com alguns comandos. Abra um terminal e execute os seguintes comandos:
20.04:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
18.04:
wget https://packages.microsoft.com/config/ubuntu/18.04/multiarch/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
Nota
Os pacotes de software IoT Edge do Azure estão sujeitos aos termos de licença localizados em cada pacote (usr/share/doc/{package-name}
ou diretórioLICENSE
). Leia os termos de licenciamento antes de utilizar um pacote. A sua instalação e utilização de um pacote constitui a sua aceitação destes termos. Se não concordar com os termos de licença, não utilize esse pacote.
Instalar um motor de contentor
O Azure IoT Edge depende de um runtime de contentor compatível com o OCI. Para cenários de produção, recomendamos que utilize o motor Moby. O motor Moby é o único motor de contentor oficialmente suportado com IoT Edge. As imagens de contentor do Docker CE/EE são compatíveis com o runtime do Moby.
Instale o motor Moby.
sudo apt-get update; \
sudo apt-get install moby-engine
Assim que o motor Moby for instalado com êxito, configure-o para utilizar local
o controlador de registo como o mecanismo de registo. Para saber mais sobre a configuração do registo, veja Lista de Verificação de Implementação de Produção.
Crie ou abra o ficheiro de configuração do Daemon do Docker em
/etc/docker/daemon.json
.Defina o controlador de registo predefinido para o
local
controlador de registo, conforme mostrado no exemplo abaixo.{ "log-driver": "local" }
Reinicie o motor de contentor para que as alterações entrem em vigor.
sudo systemctl restart docker
Dica
Se receber erros ao instalar o motor de contentor do Moby, verifique a compatibilidade do kernel do Linux para Moby. Alguns fabricantes de dispositivos incorporados enviam imagens de dispositivos que contêm kernels do Linux personalizados sem as funcionalidades necessárias para a compatibilidade do motor de contentor. Execute o seguinte comando, que utiliza o script check-config fornecido pelo Moby, para verificar a configuração do kernel:
curl -ssl https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh chmod +x check-config.sh ./check-config.sh
Na saída do script, verifique se todos os itens
Generally Necessary
em eNetwork Drivers
estão ativados. Se tiver funcionalidades em falta, ative-as ao reconstruir o kernel a partir da origem e ao selecionar os módulos associados para inclusão no kernel adequado .config. Da mesma forma, se estiver a utilizar um gerador de configuração de kernel comodefconfig
oumenuconfig
, localize e ative as respetivas funcionalidades e reconstrua o kernel em conformidade. Depois de implementar o kernel recentemente modificado, execute novamente o script check-config para verificar se todas as funcionalidades necessárias foram ativadas com êxito.
Instalar o runtime do IoT Edge
O daemon de segurança IoT Edge fornece e mantém as normas de segurança no dispositivo IoT Edge. O daemon começa em cada arranque e arranca o dispositivo ao iniciar o resto do IoT Edge runtime.
Os passos nesta secção representam o processo típico para instalar a versão mais recente num dispositivo com ligação à Internet. Se precisar de instalar uma versão específica, como uma versão de pré-lançamento ou precisar de instalar enquanto estiver offline, siga os passos de instalação de versão offline ou específicos mais à frente neste artigo.
Instale IoT Edge versão 1.1.* juntamente com o pacote libiothsm-std:
sudo apt-get update; \
sudo apt-get install iotedge
Nota
IoT Edge versão 1.1 é o ramo de suporte de longo prazo da IoT Edge. Se estiver a executar uma versão mais antiga, recomendamos que instale ou atualize para o patch mais recente, uma vez que as versões mais antigas já não são suportadas.
Aprovisionar o dispositivo com a respetiva identidade na cloud
Agora que o motor de contentor e o IoT Edge runtime estão instalados no seu dispositivo, está pronto para o próximo passo, que consiste em configurar o dispositivo com as respetivas informações de identidade e autenticação na cloud.
No dispositivo IoT Edge, abra o ficheiro de configuração.
sudo nano /etc/iotedge/config.yaml
Localize as configurações de aprovisionamento do ficheiro e anule o processamento da configuração de aprovisionamento manual com uma secção de cadeia de ligação, se ainda não estiver descomprometida.
# Manual provisioning configuration using a connection string
provisioning:
source: "manual"
device_connection_string: "ADD_DEVICE_CONNECTION_STRING_HERE"
Atualize o valor de device_connection_string com a cadeia de ligação do seu dispositivo IoT Edge. Certifique-se de que quaisquer outras secções de aprovisionamento são comentadas. Certifique-se de que o aprovisionamento: a linha não tem espaço em branco anterior e que os itens aninhados são suportados por dois espaços.
Para colar conteúdos da área de transferência no Nano Shift+Right Click
ou prima Shift+Insert
.
Guarde e feche o ficheiro.
CTRL + X
, Y
, Enter
Depois de introduzir as informações de aprovisionamento no ficheiro de configuração, reinicie o daemon:
sudo systemctl restart iotedge
Verificar a configuração com êxito
Verifique se o runtime foi instalado e configurado com êxito no seu dispositivo IoT Edge.
Dica
Precisa de privilégios elevados para executar os comandos iotedge
. Depois de terminar sessão do seu computador e iniciar sessão novamente pela primeira vez depois de instalar o runtime do IoT Edge, as suas permissões são atualizadas automaticamente. Até lá, utilize sudo
em frente aos comandos.
Verifique se o serviço de sistema IoT Edge está em execução.
sudo systemctl status iotedge
Se precisar de resolver problemas relacionados com o serviço, obtenha os registos do serviço.
journalctl -u iotedge
Utilize a check
ferramenta para verificar o estado de configuração e ligação do dispositivo.
sudo iotedge check
Dica
Utilize sudo
sempre para executar a ferramenta de verificação, mesmo depois de as suas permissões serem atualizadas. A ferramenta precisa de privilégios elevados para aceder ao ficheiro de configuração para verificar o estado de configuração.
Nota
Num dispositivo recentemente aprovisionado, poderá ver um erro relacionado com IoT Edge Hub:
× preparação para a produção: o diretório de armazenamento do Hub Edge persiste no sistema de ficheiros do anfitrião – Erro
Não foi possível verificar o estado atual do contentor do EdgeHub
Este erro é esperado num dispositivo recentemente aprovisionado porque o módulo IoT Edge Hub não está em execução. Para resolver o erro, no Hub IoT, defina os módulos para o dispositivo e crie uma implementação. A criação de uma implementação para o dispositivo inicia os módulos no dispositivo, incluindo o módulo IoT Edge Hub.
Veja todos os módulos em execução no seu dispositivo IoT Edge. Quando o serviço é iniciado pela primeira vez, só deverá ver o módulo edgeAgent em execução. O módulo edgeAgent é executado por predefinição e ajuda a instalar e iniciar quaisquer módulos adicionais que implemente no seu dispositivo.
sudo iotedge list
Quando cria um novo dispositivo IoT Edge, este irá apresentar o código 417 -- The device's deployment configuration is not set
de estado no portal do Azure. Este estado é normal e significa que o dispositivo está pronto para receber uma implementação do módulo.
Instalação de versão offline ou específica (opcional)
Os passos nesta secção destinam-se a cenários não abrangidos pelos passos de instalação padrão. Isto pode incluir:
- Instalar IoT Edge offline
- Instalar uma versão candidata à versão
Utilize os passos nesta secção se quiser instalar uma versão específica do runtime do Azure IoT Edge que não está disponível através do gestor de pacotes. A lista de pacotes da Microsoft contém apenas um conjunto limitado de versões recentes e respetivas sub-versões, pelo que estes passos destinam-se a qualquer pessoa que pretenda instalar uma versão mais antiga ou uma versão candidata ao lançamento.
Com comandos curl, pode direcionar os ficheiros de componente diretamente do IoT Edge repositório do GitHub.
Navegue para as versões do Azure IoT Edge e localize a versão de versão que pretende direcionar.
Expanda a secção Recursos para essa versão.
Cada versão deve ter novos ficheiros para o daemon de segurança IoT Edge e o hsmlib. Se pretender instalar IoT Edge num dispositivo offline, transfira estes ficheiros com antecedência. Caso contrário, utilize os seguintes comandos para atualizar esses componentes.
Localize o ficheiro libiothsm-std que corresponde à arquitetura do seu dispositivo IoT Edge. Clique com o botão direito do rato na ligação de ficheiro e copie o endereço da ligação.
Utilize a ligação copiada no seguinte comando para instalar essa versão do hsmlib:
curl -L <libiothsm-std_link> -o libiothsm-std.deb && sudo apt-get install ./libiothsm-std.deb
Localize o ficheiro iotedge que corresponde à arquitetura do seu dispositivo IoT Edge. Clique com o botão direito do rato na ligação de ficheiro e copie o endereço da ligação.
Utilize a ligação copiada no seguinte comando para instalar essa versão do daemon de segurança IoT Edge.
curl -L iotedge_link_here -o iotedge.deb && sudo apt-get install ./iotedge.deb
Agora que o motor de contentor e o IoT Edge runtime estão instalados no seu dispositivo, está pronto para o próximo passo, que consiste em Aprovisionar o dispositivo com a respetiva identidade na cloud.
Desinstalar IoT Edge
Se quiser remover o IoT Edge instalação do seu dispositivo, utilize os seguintes comandos.
Remova o runtime do IoT Edge.
sudo apt-get autoremove iotedge
Quando o IoT Edge runtime é removido, todos os contentores que criou são parados, mas ainda existem no seu dispositivo. Veja todos os contentores para ver quais permanecem.
sudo docker ps -a
Elimine os contentores do seu dispositivo, incluindo os dois contentores de runtime.
sudo docker rm -f <container name>
Por fim, remova o runtime do contentor do seu dispositivo.
sudo apt-get autoremove --purge moby-engine