Criar e provisionar um dispositivo IoT Edge no Linux usando chaves simétricas
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.
Este artigo fornece instruções completas para registrar e provisionar um dispositivo Linux IoT Edge, incluindo a instalação do IoT Edge.
Cada dispositivo que se conecta a um hub IoT tem um ID de dispositivo que é usado para rastrear comunicações de nuvem para dispositivo ou de dispositivo para nuvem. Você configura um dispositivo com suas informações de conexão, que incluem o nome do host do hub IoT, o ID do dispositivo e as informações que o dispositivo usa para autenticar no Hub IoT.
As etapas neste artigo percorrem um processo chamado provisionamento manual, em que você conecta um único dispositivo ao seu hub IoT. Para provisionamento manual, você tem duas opções para autenticar dispositivos IoT Edge:
Chaves simétricas: quando você cria uma nova identidade de dispositivo no Hub IoT, o serviço cria duas chaves. Você coloca uma das chaves no dispositivo e ela apresenta a chave para o Hub IoT ao autenticar.
Este método de autenticação é mais rápido para começar, mas não tão seguro.
X.509 autoassinado: você cria dois certificados de identidade X.509 e os coloca no dispositivo. Ao criar uma nova identidade de dispositivo no Hub IoT, você fornece impressões digitais de ambos os certificados. Quando o dispositivo se autentica no Hub IoT, ele apresenta um certificado e o Hub IoT verifica se o certificado corresponde à sua impressão digital.
Esse método de autenticação é mais seguro e recomendado para cenários de produção.
Este artigo aborda o uso de chaves simétricas como método de autenticação. Se você quiser usar certificados X.509, consulte Criar e provisionar um dispositivo IoT Edge no Linux usando certificados X.509.
Nota
Se você tiver muitos dispositivos para configurar e não quiser provisionar manualmente cada um, use um dos seguintes artigos para saber como o IoT Edge funciona com o serviço de provisionamento de dispositivos do Hub IoT:
Pré-requisitos
Este artigo aborda o registro do dispositivo IoT Edge e a instalação do IoT Edge nele. Essas tarefas têm diferentes pré-requisitos e utilitários usados para realizá-las. Certifique-se de ter todos os pré-requisitos cobertos antes de prosseguir.
Ferramentas de gestão de dispositivos
Você pode usar o portal do Azure, o Visual Studio Code ou a CLI do Azure para as etapas de registro do dispositivo. Cada utilitário tem seus próprios pré-requisitos:
Um hub IoT gratuito ou padrão em sua assinatura do Azure.
Requisitos do dispositivo
Um dispositivo Linux X64, ARM32 ou ARM64.
A Microsoft publica pacotes de instalação para uma variedade de sistemas operacionais.
Para obter as informações mais recentes sobre quais sistemas operacionais são suportados atualmente para cenários de produção, consulte Sistemas com suporte do Azure IoT Edge.
Registar o seu dispositivo
Você pode usar o portal do Azure, o Visual Studio Code ou a CLI do Azure para registrar seu dispositivo, dependendo de sua preferência.
Em seu hub IoT no portal do Azure, os dispositivos IoT Edge são criados e gerenciados separadamente dos dispositivos IoT que não estão habilitados para borda.
Entre no portal do Azure e navegue até 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. Anote este ID do dispositivo, pois irá utilizá-lo mais tarde.
- Marque a caixa de seleção Dispositivo IoT Edge.
- Selecione Chave simétrica como o tipo de autenticação.
- Use as configurações padrão para gerar automaticamente chaves de autenticação e conectar o novo dispositivo ao hub.
Selecione Guardar.
Agora que você tem um dispositivo registrado no Hub IoT, recupere as informações usadas para concluir a instalação e o provisionamento do tempo de execução do IoT Edge.
Exibir dispositivos registrados e recuperar informações de provisionamento
Os dispositivos que usam autenticação de chave simétrica precisam de suas cadeias de conexão para concluir a instalação e o provisionamento do tempo de execução do IoT Edge.
Os dispositivos habilitados para borda que se conectam ao seu hub IoT estão listados na página Dispositivos . Você pode filtrar a lista por tipo Iot Edge Device.
Quando estiver pronto para configurar seu dispositivo, você precisará da cadeia de conexão que vincula seu dispositivo físico à sua identidade no hub IoT.
Os dispositivos que se autenticam com chaves simétricas têm suas cadeias de conexão disponíveis para cópia no portal.
- Na página Dispositivos no portal, selecione o ID do dispositivo IoT Edge na lista.
- Copie o valor de Cadeia de Conexão Primária ou Cadeia de Conexão Secundária.
Instalar o IoT Edge
Nesta seção, você prepara sua VM Linux ou dispositivo físico para o IoT Edge. Em seguida, instale o 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 confiáveis.
Importante
Em 30 de junho de 2022, o Raspberry Pi OS Stretch foi retirado da lista de suporte do Tier 1 OS. Para evitar possíveis vulnerabilidades de segurança, atualize seu sistema operacional host 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 do Azure IoT Edge estão sujeitos aos termos de licença localizados em cada pacote (usr/share/doc/{package-name}
ou no LICENSE
diretório). Leia os termos de licença antes de usar um pacote. A sua instalação e utilização de um pacote constitui a sua aceitação destes termos. Se você não concorda com os termos da licença, não use esse pacote.
Instalar um mecanismo de contêiner
O Azure IoT Edge depende de um tempo de execução de contêiner compatível com OCI. Para cenários de produção, recomendamos que você use o mecanismo Moby. O mecanismo Moby é o único mecanismo de contêiner oficialmente suportado com o IoT Edge. As imagens de contêiner do Docker CE/EE são compatíveis com o tempo de execução do Moby.
Instale o motor Moby.
sudo apt-get update; \
sudo apt-get install moby-engine
Depois que o mecanismo Moby for instalado com êxito, configure-o para usar local
o driver de log como o mecanismo de registro. Para saber mais sobre a configuração de log, consulte Lista de verificação de implantação de produção.
Crie ou abra o arquivo de configuração do daemon do Docker em
/etc/docker/daemon.json
.Defina o driver de log padrão para o
local
driver de log, conforme mostrado no exemplo abaixo.{ "log-driver": "local" }
Reinicie o mecanismo de contêiner para que as alterações entrem em vigor.
sudo systemctl restart docker
Gorjeta
Se você receber erros ao instalar o mecanismo de contêiner Moby, verifique se o kernel Linux é compatível com Moby. Alguns fabricantes de dispositivos incorporados enviam imagens de dispositivos que contêm kernels Linux personalizados sem os recursos necessários para a compatibilidade do mecanismo de contêiner. Execute o seguinte comando, que usa 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 em
Generally Necessary
eNetwork Drivers
estão habilitados. Se você estiver faltando recursos, habilite-os reconstruindo seu kernel a partir do código-fonte e selecionando os módulos associados para inclusão no .config do kernel apropriado. Da mesma forma, se você estiver usando um gerador de configuração do kernel comodefconfig
oumenuconfig
, encontre e habilite os respetivos recursos e reconstrua seu kernel de acordo. Depois de implantar seu kernel recém-modificado, execute o script check-config novamente para verificar se todos os recursos necessários foram habilitados com êxito.
Instalar o runtime do IoT Edge
O daemon de segurança do IoT Edge fornece e mantém padrões de segurança no dispositivo IoT Edge. O daemon é iniciado em cada inicialização e inicializa o dispositivo iniciando o restante do tempo de execução do IoT Edge.
As etapas nesta seção representam o processo típico para instalar a versão mais recente em um dispositivo que tenha conexão com a Internet. Se você precisar instalar uma versão específica, como uma versão de pré-lançamento, ou precisar instalar offline, siga as etapas de instalação Offline ou versão específica mais adiante neste artigo.
Instale o IoT Edge versão 1.1.* junto com o pacote libiothsm-std :
sudo apt-get update; \
sudo apt-get install iotedge
Nota
O IoT Edge versão 1.1 é o ramo de suporte de longo prazo do IoT Edge. Se você estiver executando uma versão mais antiga, recomendamos instalar ou atualizar para o patch mais recente, pois as versões mais antigas não são mais suportadas.
Provisionar o dispositivo com sua identidade na nuvem
Agora que o mecanismo de contêiner e o tempo de execução do IoT Edge estão instalados em seu dispositivo, você está pronto para a próxima etapa, que é configurar o dispositivo com sua identidade na nuvem e informações de autenticação.
No dispositivo IoT Edge, abra o arquivo de configuração.
sudo nano /etc/iotedge/config.yaml
Localize as configurações de provisionamento do arquivo e remova o comentário da configuração de provisionamento manual usando uma seção de cadeia de conexão , se ela ainda não tiver sido comentada.
# 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 conexão do seu dispositivo IoT Edge. Certifique-se de que todas as outras seções de provisionamento sejam comentadas. Verifique se a linha provisionamento: não tem espaço em branco anterior e se os itens aninhados estão recuados por dois espaços.
Para colar o conteúdo da área de transferência no Nano Shift+Right Click
ou pressione Shift+Insert
.
Guarde e feche o ficheiro.
CTRL + X
, Y
, Enter
Depois de inserir as informações de provisionamento no arquivo de configuração, reinicie o daemon:
sudo systemctl restart iotedge
Verificar a configuração bem-sucedida
Verifique se o tempo de execução foi instalado e configurado com êxito em seu dispositivo IoT Edge.
Gorjeta
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á, use sudo
na frente dos comandos.
Verifique se o serviço do 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
Use a ferramenta para verificar a configuração e o check
status da conexão do dispositivo.
sudo iotedge check
Gorjeta
Sempre use sudo
para executar a ferramenta de verificação, mesmo depois que suas permissões forem atualizadas. A ferramenta precisa de privilégios elevados para acessar o arquivo de configuração para verificar o status da configuração.
Nota
Em um dispositivo recém-provisionado, você pode ver um erro relacionado ao IoT Edge Hub:
× prontidão para produção: o diretório de armazenamento do Edge Hub é mantido no sistema de arquivos host - Erro
Não foi possível verificar o estado atual do contêiner edgeHub
Esse erro é esperado em um dispositivo recém-provisionado 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 implantação. A criação de uma implantaçã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 for iniciado pela primeira vez, você verá apenas o módulo edgeAgent em execução. O módulo edgeAgent é executado por padrão e ajuda a instalar e iniciar quaisquer módulos adicionais que você implantar em seu dispositivo.
sudo iotedge list
Quando você cria um novo dispositivo IoT Edge, ele exibirá o código 417 -- The device's deployment configuration is not set
de status no portal do Azure. Esse status é normal e significa que o dispositivo está pronto para receber uma implantação de módulo.
Instalação offline ou de versão específica (opcional)
As etapas nesta seção são para cenários não cobertos pelas etapas de instalação padrão. Isto pode incluir:
- Instalar o IoT Edge enquanto estiver offline
- Instalar uma versão Release Candidate
Use as etapas nesta seção se quiser instalar uma versão específica do tempo de execução do Azure IoT Edge que não esteja disponível por meio do gerenciador de pacotes. A lista de pacotes da Microsoft contém apenas um conjunto limitado de versões recentes e suas subversões, portanto, essas etapas são para quem deseja instalar uma versão mais antiga ou uma versão candidata a lançamento.
Usando comandos curl, você pode direcionar os arquivos de componentes diretamente do repositório GitHub do IoT Edge.
Navegue até as versões do Azure IoT Edge e localize a versão de lançamento que você deseja segmentar.
Expanda a seção Ativos dessa versão.
Cada versão deve ter novos arquivos para o daemon de segurança do IoT Edge e o hsmlib. Se você vai instalar o IoT Edge em um dispositivo offline, baixe esses arquivos com antecedência. Caso contrário, use os seguintes comandos para atualizar esses componentes.
Encontre o arquivo libiothsm-std que corresponde à arquitetura do seu dispositivo IoT Edge. Clique com o botão direito do mouse no link do arquivo e copie o endereço do link.
Use o link copiado no comando a seguir para instalar essa versão do hsmlib:
curl -L <libiothsm-std_link> -o libiothsm-std.deb && sudo apt-get install ./libiothsm-std.deb
Encontre o arquivo iotedge que corresponde à arquitetura do seu dispositivo IoT Edge. Clique com o botão direito do mouse no link do arquivo e copie o endereço do link.
Use o link copiado no comando a seguir para instalar essa versão do daemon de segurança do IoT Edge.
curl -L iotedge_link_here -o iotedge.deb && sudo apt-get install ./iotedge.deb
Agora que o mecanismo de contêiner e o tempo de execução do IoT Edge estão instalados em seu dispositivo, você está pronto para a próxima etapa, que é Provisionar o dispositivo com sua identidade de nuvem.
Desinstalar o IoT Edge
Se quiser remover a instalação do IoT Edge do seu dispositivo, use os seguintes comandos.
Remova o runtime do IoT Edge.
sudo apt-get autoremove iotedge
Quando o tempo de execução do IoT Edge é removido, todos os contêineres criados por ele são interrompidos, mas ainda existem no seu dispositivo. Veja todos os contêineres para ver quais permanecem.
sudo docker ps -a
Exclua os contêineres do seu dispositivo, incluindo os dois contêineres de tempo de execução.
sudo docker rm -f <container name>
Finalmente, remova o tempo de execução do contêiner do seu dispositivo.
sudo apt-get autoremove --purge moby-engine