Tutorial: Atualização de Dispositivo para Hub IoT usando um agente simulador
Atualização de Dispositivo para Hub IoT oferece suporte a atualizações baseadas em imagens, pacotes e scripts. Esse tutorial demonstra uma atualização de dispositivo baseada em imagem de ponta a ponta que usa um agente simulador do Ubuntu.
As atualizações de imagem fornecem um alto nível de confiança no estado final do dispositivo e não apresentam os mesmos desafios de gerenciamento de pacotes e dependências que as atualizações baseadas em pacotes ou scripts. É mais fácil replicar os resultados de uma atualização de imagem entre um ambiente de pré-produção e produção ou adotar facilmente um modelo de failover A/B.
Neste tutorial, você:
- Atribua um dispositivo IoT a um grupo de atualização de dispositivos usando marcas.
- Baixe e instale uma atualização de imagem.
- Importe a atualização da imagem.
- Implante a atualização de imagem.
- Exiba o histórico de implantação de atualização.
Pré-requisitos
- Uma máquina física ou virtual Ubuntu 18.04 x64
- Uma conta de atualização de dispositivo e instância configurada com um hub IoT
Registre e configure um dispositivo e módulo
Adicione um dispositivo ao registro de dispositivo no hub IoT. Todo dispositivo que se conecta ao IoT Hub deve ser registrado.
- No portal do Azure, abra a página do hub IoT associada à sua instância de atualização de dispositivo.
- No painel de navegação, selecione Gerenciamento de dispositivos>Dispositivos.
- Na página Dispositivos, selecione Adicionar dispositivo.
- Em ID do Dispositivo, insira um nome para o dispositivo. Certifique-se de que a caixa de seleção Gerar chaves automaticamente esteja marcada.
- Selecione Salvar. O dispositivo aparece na lista na página Dispositivos.
Criar uma identidade de módulo
Depois de registrar o dispositivo, crie uma identidade de módulo. Módulos são identidades independentes para componentes de dispositivos IoT, o que permite uma granularidade mais fina quando o dispositivo executa vários processos.
Nesse tutorial, você cria uma identidade de módulo para o agente de atualização de dispositivo que é executado no dispositivo. Para obter mais informações, confira Noções básicas e uso de módulos gêmeos no Hub IoT.
- Na página Dispositivos, selecione o dispositivo que você registrou.rou.
- Na página do dispositivo, selecione Adicionar identidade do módulo.
- Na página Adicionar identidade do módulo, em Nome da identidade do módulo, insira um nome para o módulo, como DeviceUpdateAgent.
- Selecione Salvar. A nova identidade do módulo aparece na página do dispositivo em Identidades do módulo.
- Selecione o nome do módulo e, na página Detalhes da identidade do módulo, selecione o ícone Copiar ao lado de Cadeia de conexão (chave primária). Salve essa cadeia de conexão do módulo para usar ao configurar o agente de atualização do dispositivo.
Adicione uma marca de grupo ao seu módulo gêmeo
O Device Update organiza automaticamente os dispositivos em grupos com base nas marcas atribuídas e nas propriedades de compatibilidade. Cada dispositivo pertence a apenas um grupo, mas os grupos podem ter vários subgrupos para classificar as diferentes classes de dispositivos.
Você pode atribuir uma marca a qualquer dispositivo que o Device Update gerencia para atribuir o dispositivo a um grupo de Device Update. A marca pode estar no dispositivo gêmeo ou no módulo gêmeo, como nesse tutorial. Cada dispositivo pode ser atribuído a apenas um grupo de atualização de dispositivos.
Na página Detalhes da identidade do módulo, selecione Identidade do módulo gêmeo.
Na página Module Identity Twin, adicione uma
DeviceUpdateGroup
nova marca ao código JSON no mesmo nível quemodelId
eversion
, da seguinte maneira:"tags": { "DeviceUpdateGroup": "DU-simulator-tutorial" },
Selecione Salvar. O portal reformata o módulo twin para incorporar a marca na estrutura JSON.
Instalar e configurar o agente de Atualização de Dispositivo
O agente Device Update é executado em todos os dispositivos gerenciados pelo Device Update. Nesse tutorial, você instala o agente de atualização de dispositivo no dispositivo Ubuntu 18.04 e o configura para ser executado como um simulador, demonstrando como você pode aplicar uma atualização a um dispositivo sem alterar a configuração do dispositivo.
Observação
Você também pode usar o Serviço de Identidade do Azure IoT para provisionar o dispositivo. Para fazer isso, instale o Serviço de Identidade do Azure IoT antes de instalar o agente de atualização de dispositivo. Em seguida, configure o agente de atualização do dispositivo com "connectionType": "AIS"
e deixe connectionData
como uma cadeia de caracteres em branco no arquivo de configuração.
Adicione o repositório de pacotes da Microsoft e, em seguida, adicione a chave de assinatura do pacote da Microsoft à sua lista de chaves confiáveis.
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
Instale os pacotes .deb do agente de atualização do dispositivo.
sudo apt-get update sudo apt-get install deviceupdate-agent
Abra o arquivo de configuração do agente du-config.json.
sudo nano /etc/adu/du-config.json
Atualize du-config.json com os seguintes valores de exemplo. Substitua o espaço reservado
<connection string>
pela cadeia de conexão que você copiou da identidade do módulo. Para obter mais informações sobre os parâmetros, veja Arquivo de configuração de atualização do dispositivo.manufacturer: "contoso"
model: "video"
agents.name: "aduagent"
agents.connectionData: <connection string>
agents.manufacturer: "contoso"
agents.model: "video"
O arquivo du-config.json editado deve ficar assim:
{ "schemaVersion": "1.0", "aduShellTrustedUsers": [ "adu", "do" ], "manufacturer": "contoso", "model": "video", "agents": [ { "name": "aduagent", "runas": "adu", "connectionSource": { "connectionType": "string", "connectionData": <connection string> }, "manufacturer": "contoso", "model": "video" } ] }
Pressione Ctrl+X para sair do editor e digite y para salvar suas alterações.
Para configurar o agente para ser executado como um simulador, execute o seguinte comando no dispositivo IoT. O agente de atualização de dispositivo invoca o manipulador do simulador para processar atualizações que usam a extensão Microsoft SWUpdate.
sudo /usr/bin/AducIotAgent --extension-type updateContentHandler --extension-id 'microsoft/swupdate:1' --register-extension /var/lib/adu/extensions/sources/libmicrosoft_simulator_1.so
Obtenha os arquivos do simulador
Baixe e extraia o arquivo Tutorial_Simulator.zip da seção Ativos mais recente do GitHub Device Update Releases na sua máquina Ubuntu 18.04.
Você pode usar
wget
para baixar o arquivo ZIP. Substitua<release_version>
pela versão mais recente, por exemplo1.0.0
.wget https://github.com/Azure/iot-hub-device-update/releases/download/<release_version>/Tutorial_Simulator.zip
Copie o arquivo sample-du-simulator-data.json da pasta Tutorial_Simulator extraída para a pasta tmp.
cp sample-du-simulator-data.json /tmp/du-simulator-data.json
Observação
Se a pasta tmp não existir, crie-a da seguinte maneira:
sudo mkdir/tmp sudo chown root:root/tmp sudo chmod 1777/tmp
Altere as permissões do arquivo /tmp/sample-du-simulator-data.json.
sudo chown adu:adu /tmp/du-simulator-data.json sudo chmod 664 /tmp/du-simulator-data.json
Reinicie o agente de Atualização de Dispositivo para aplicar suas alterações.
sudo systemctl restart deviceupdate-agent
Importar a atualização
Baixe e extraia o arquivo Tutorial_Simulator.zip da seção GitHub Device Update Releases mais recente Ativos para sua máquina de desenvolvimento, caso ela seja diferente do seu dispositivo Ubuntu 18.04 IoT. Essa seção usa os arquivos TutorialImportManifest_Sim.importmanifest.json e adu-update-image-raspberrypi3.swu da pasta Tutorial_Simulator.
O arquivo de atualização é o mesmo do tutorial do Raspberry Pi. Como a atualização neste tutorial é simulada, o conteúdo do arquivo específico não importa.
Na sua máquina de desenvolvimento, entre no portal do Azure e vá para o hub IoT configurado com sua instância de atualização de dispositivo.
No painel de navegação, selecione Gerenciamento de dispositivos>Atualizações.
Na página Atualizações, selecione Importar uma nova atualização.
Na página Importar atualização, selecione Selecionar do contêiner de armazenamento.
Selecione uma conta de armazenamento existente ou crie uma nova conta selecionando Conta de armazenamento.
Selecione um contêiner existente ou crie um novo contêiner selecionando Contêiner. Esse contêiner é usado para preparar os arquivos de atualização para importação.
Observação
Para evitar importar acidentalmente arquivos de atualizações anteriores, use um novo contêiner sempre que importar uma atualização. Se você não usar um novo contêiner, exclua todos os arquivos do contêiner existente.
Na página do contêiner, selecione Carregar. Navegue até os arquivos TutorialImportManifest_Sim.importmanifest.json e adu-update-image-raspberrypi3.swu e selecione Carregar.
Selecione as caixas de seleção em ambos os arquivos e selecione Selecionar para retornar à página Importar atualização.
Na página Importar atualização, revise os arquivos a serem importados e selecione Importar atualização.
O processo de importação é iniciado e você pode selecionar Exibir histórico de importação para visualizar o histórico e o status da importação. Na página Histórico de atualizações, o campo Status mostra Sucesso quando a importação é concluída. Você pode selecionar Atualizar para atualizar o status.
A atualização importada agora aparece na página Atualizações.
Para obter mais informações sobre o processo de importação, consulte Importar uma atualização para a Atualização de Dispositivo para Hub IoT.
Selecione o grupo de dispositivos
Você pode usar a marca de grupo aplicada ao dispositivo para implantar a atualização no grupo de dispositivos. Selecione a guia Grupos e Implantações na parte superior da página Atualizações para exibir a lista de grupos e implantações e o gráfico de conformidade de atualização.
O gráfico de conformidade da atualização mostra a contagem de dispositivos em vários estados de conformidade: Com a atualização mais recente, Novas atualizações disponíveis e Atualizações em andamento. Para obter mais informações, confira a Conformidade da Atualização de Dispositivo.
Em Nome do grupo, você vê uma lista de todos os grupos de dispositivos para dispositivos conectados a esse hub IoT e suas atualizações disponíveis, com links para implantar as atualizações em Status. Todos os dispositivos que não atendem aos requisitos de classe de dispositivo de um grupo aparecem em um grupo inválido correspondente. Para obter mais informações sobre as marcas e os grupos, consulte Gerenciar grupos de dispositivos.
Você deverá ver o grupo de dispositivos que contém o dispositivo simulado que você configurou nesse tutorial. Selecione o nome do grupo para exibir os detalhes.
Implantar a atualização
Na página Detalhes do grupo, você verá uma nova atualização disponível para esse grupo. Selecione Implantar para iniciar a implantação.
A atualização que você importou está listada como a melhor atualização disponível para esse grupo. Selecione Implantar.
Agende sua implantação para começar imediatamente e selecione Criar.
Navegue até a aba Atualizações atuais. Em Detalhes da implantação, o Status se torna Ativo.
Após a atualização bem-sucedida do seu dispositivo, retorne à página Atualizações. Você deverá ver que seu gráfico de conformidade e os detalhes da implantação foram atualizados para incluir a atualização instalada.
Exibir histórico de implantação de atualizações
Retorne à página de detalhes do grupo e selecione a guia Histórico de implantação.
Selecione Exibir detalhes da implantação ao lado da implantação criada. Selecione Atualizar para exibir os detalhes mais recentes do status.
Limpar os recursos
Se você quiser continuar para o próximo tutorial, mantenha os recursos da Atualização de Dispositivo e do Hub IoT. Quando você não precisar mais dos recursos criados para esse tutorial, você pode excluí-los.
- No portal do Azure, navegue até o grupo de recursos que contém os recursos.
- Se você quiser excluir todos os recursos do grupo, selecione Excluir grupo de recursos.
- Se você quiser excluir apenas alguns dos recursos, use as caixas de seleção para selecionar os recursos e selecione Excluir.