Início Rápido: Gerenciar um único dispositivo IoT virtual usando a CLI do Azure
Importante
Este documento não é mais atualizado e será removido. Para up-toinstruções sobre como experimentar cenários osConfig:
- Primeiro, siga as etapas em Criar um ambiente de laboratório osConfig (com Azure IoT) em 5 minutos
- Em seguida, experimente qualquer um dos cenários de: O que posso provisionar e gerenciar?
O objetivo deste Início Rápido é familiarizá-lo com a administração remota de dispositivos IoT/Edge por meio do OSConfig para IoT. Na Parte 1, você configurará um ambiente de teste, incluindo a criação de uma VM para atuar como um dispositivo IoT virtual. Na Parte 2, você executará várias ações de gerenciamento de dispositivos, por exemplo:
- Recuperar remotamente o endereço IP do dispositivo
- Testar remotamente a conectividade do ponto de extremidade da perspectiva do dispositivo
- Reinicializar remotamente o dispositivo
- e mais
Este Início Rápido usa um único dispositivo de exemplo. Para usar o OSConfig em escala, você usaria serviços de gerenciamento de dispositivos do Hub Iot como o plano de controle, em vez de comandos individuais da CLI do Azure.
Pré-requisitos
- Você precisará de uma conta do Azure com uma assinatura ativa. Se necessário, você pode criar uma conta paragratuito.
- Você usará o ambiente de
do Azure Cloud Shell - OBSERVAÇÃO: se esta for a primeira vez que você usa o Azure Cloud Shell, o portal orientará você na criação de algum espaço de armazenamento antes de continuar. Isso é normal.
- OBSERVAÇÃO: o Azure Cloud Shell já tem as ferramentas mais recentes da CLI do Azure e é conectado automaticamente à sua conta do Azure. Se você preferir usar seu próprio ambiente
bash
em vez do cloud shell, poderá instalar e configurar a CLI do Azure em seu próprio ambientebash
.
- Você precisará da extensão IOT do Azure para a CLI do Azure, que pode ser adicionada usando o seguinte comando:
az extension add --name azure-iot
Verificando pré-requisitos
- No do Azure Cloud Shell (ou em seu ambiente de
bash
alternativo), verifique se a CLI do Azure está conectado à conta do Azure e ao contexto de assinatura que você deseja usar.
az account show
Se você precisar entrar com uma conta diferente ou alterar assinaturas, poderá usar os comandos az login
e az account set
.
Visão geral do ambiente de início rápido
Parte 1: Configurar seu ambiente
1.1: Criar seus recursos de IoT do Azure
1.1.1: Definir um nome exclusivo para o Hub IoT
Você precisará criar um nome exclusivo para o Hub IoT, como "Início Rápido12345" ou "HelloWorld98765". Esse nome será usado repetidamente em comandos posteriores, portanto, vamos armazená-lo em uma variável bash, da seguinte maneira:
# In the following command replace <Your_Made_Up_Name_Here>
# with your own preferred hub name, for example:
# MY_IOT_HUB_NAME="MyQuickStart54321"
MY_IOT_HUB_NAME="<Your_Made_Up_Name_Here>"
1.1.2: Criar um grupo de recursos e um Hub IoT
az group create --resource-group QuickstartOSConfig --location westus
az iot hub create --resource-group QuickstartOSConfig --name "$MY_IOT_HUB_NAME" --query id
Ponta
Se o comando az iot hub create...
falhar com um erro de que o nome não estava disponível, isso significa que o nome escolhido já estava em uso em outro lugar no Azure. Para resolver isso, repita a etapa MY_IOT_HUB_NAME="<Your_Made_Up_Name_Here>"
acima com um nome novo e mais exclusivo e tente o comando az iot hub create ...
novamente.
Ponta
Não é incomum que o comando az iot hub create...
leve alguns minutos para ser concluído.
1.1.3: Criar a ID do dispositivo e obter a cadeia de conexão do dispositivo
az iot hub device-identity create --hub-name "$MY_IOT_HUB_NAME" -d device01 --query deviceId
az iot hub device-identity connection-string show --hub-name "$MY_IOT_HUB_NAME" --device-id device01
Ponta
Anote o valor de connectionString
retornado pelo último comando (ele começa com HostName=
). Você usará essa cadeia de conexão em uma etapa posterior.
1.2: Criar uma VM do Azure para atuar como o dispositivo IoT virtual
Use o comando a seguir para criar uma máquina virtual.
az vm create --resource-group QuickstartOSConfig --name device01 --image Canonical:UbuntuServer:18.04-lts:latest --admin-username azureuser --generate-ssh-keys --query publicIpAddress
Ponta
Anote o endereço IP retornado pelo último comando. Você usará esse endereço na etapa a seguir.
1.3: Instalar o software cliente no dispositivo IoT virtual
1.3.1: Estabelecer de acesso de terminal ao dispositivo virtual
Os próximos comandos precisam executados na VM que você acabou de criar. Use o SSH para se conectar:
# In the following command, replace <public ip address from previous step> with
# the actual IP address. For example:
# ssh azureuser@1.2.3.4
ssh azureuser@<ip address from previous step>
Ponta
Seu cliente ssh pode exigir que você digite yes
para continuar. Isso é normal.
Ponta
Antes de continuar, verifique se você está conectado ao dispositivo IoT virtual. O prompt de comando deve ter sido alterado de <your name>@azure:
para azureuser@device01:
. Se o prompt de comando não tiver sido alterado para azureuser@device01:
, execute o comando ssh
acima novamente.
1.3.2: No dispositivo virtual, instalar aziot-identity-service
sudo apt-get update
curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add
sudo apt-add-repository https://packages.microsoft.com/ubuntu/18.04/multiarch/prod
sudo apt-get update
sudo apt install -y aziot-identity-service
1.3.3: No dispositivo virtual, aplicar a cadeia de conexão
Configure o dispositivo para autenticar no Azure IoT usando o comando a seguir. Você usará o valor da cadeia de conexão obtida anteriormente no Criar seus recursos de IoT do Azure.
sudo aziotctl config mp --connection-string "<your connection string>"
sudo aziotctl config apply
1.3.4: No dispositivo virtual, instalar o pacote OSConfig e observar que ele está em execução
sudo apt install -y osconfig
sudo systemctl status osconfig | grep --color=never Active
1.2.5: Sair da sessão SSH
exit
Parte 2: Usar o OSConfig para IoT
Você conseguiu! Agora que o ambiente está preparado, podemos começar a usar o OSConfig para obter e definir a configuração e o estado no nível do host por meio do Hub IoT. No Azure Cloud Shell ou em seu computador, use os seguintes comandos da CLI do Azure para concluir cada exemplo.
2.1: Está tudo ligado?
Começaremos obtendo o Hub IoT do dispositivo deviceId
e mostraremos que o OSConfig está ativo.
az iot hub query --hub-name "$MY_IOT_HUB_NAME" -q "select deviceId,moduleId,connectionState from devices.modules where deviceID='device01' and moduleId='osconfig'"
2.2: Obter o estado de rede do dispositivo, como endereços IP e servidores DNS, para qualquer dispositivo habilitado para OSConfig no Hub IoT
Há muitos casos de uso para relatar o estado da rede de dispositivos gerenciados. Por exemplo, talvez você precise do endereço IP local para conectar um fluxo de vídeo IP local Da mesma forma, convém relatar os servidores DNS em uso para solução de problemas ou para garantir que os dispositivos estejam usando a infraestrutura de rede esperada. O exemplo a seguir recupera os endereços IP e os servidores DNS atribuídos a cada adaptador de rede.
az iot hub query --hub-name "$MY_IOT_HUB_NAME" -q "select deviceId,properties.reported.Networking.NetworkConfiguration.IpAddresses,properties.reported.Networking.NetworkConfiguration.DnsServers from devices.modules where moduleId='osconfig'"
Ponta
As informações de IP retornadas são da perspectiva do dispositivo, correspondendo ao que você obteria executando ifconfig
ou ip address
localmente no dispositivo. O endereço IP público do Azure (usado anteriormente para SSH) é roteado por NAT fora da VM, portanto, ele não é visto aqui.
2.3: Configurar a política de telemetria do ADHS (Serviço de Integridade do Dispositivo) do Azure e verificar a conformidade
O ADHS é um agente de diagnóstico incluído em alguns dispositivos. A VM que você acabou de criar não tem o ADHS instalado, mas ainda podemos definir a política proativamente como um exemplo.
O primeiro comando define a propriedade desejada do gêmeo para ADHS como 2
(o que significa aceitação). O segundo comando compara as versões desejadas (definidas por você, o administrador) e relatadas (enviadas pelo dispositivo) da propriedade para verificar se o dispositivo recebeu e aplicou a política.
az iot hub module-twin update --hub-name "$MY_IOT_HUB_NAME" -d device01 -m osconfig --desired '{"Settings":{"__t":"c","DeviceHealthTelemetryConfiguration":2}}' > /dev/null
az iot hub query --hub-name "$MY_IOT_HUB_NAME" -q "select deviceId,properties.desired.Settings.DeviceHealthTelemetryConfiguration AS ADHSLevel_Desired,properties.reported.Settings.DeviceHealthTelemetryConfiguration.value AS ADHSLevel_Reported from devices.modules where moduleId='osconfig'"
2.4: Aplicar uma configuração personalizada (exemplo de fuso horário)
O recurso CommandRunner
do OSConfig permite que você obtenha e defina quase tudo no dispositivo. Este exemplo define o fuso horário do sistema operacional do dispositivo como UTC. Impor um fuso horário uniforme em pontos de extremidade (independentemente de sua localização física) é uma prática comum para melhorar a manipulação de carimbo de data/hora em uma solução distribuída.
O comando da CLI do Azure a seguir informa ao OSConfig para definir o fuso horário usando timedatectl
e relatar o fuso horário resultante.
az iot hub module-twin update --hub-name "$MY_IOT_HUB_NAME" -d device01 -m osconfig --desired '{"CommandRunner":{"__t":"c","CommandArguments":{"CommandId":"my_timezone_config", "Action":3, "Arguments": "timedatectl set-timezone UTC; timedatectl | grep zone | tr -d '[:space:]'"}}}' --query "properties.desired.CommandRunner"
A saída mostra que definimos o comando desejado no gêmeo. Para confirmar que funcionou, daremos uma etapa adicional. Primeiro, aguardaremos pelo menos 30 segundos dando tempo para o dispositivo receber o comando, processá-lo e atualizar o gêmeo com os resultados.
Tendo esperado pelo menos 30 segundos desde o comando anterior, use o seguinte para recuperar a saída:
az iot hub query --hub-name "$MY_IOT_HUB_NAME" -q "select deviceId,properties.reported.CommandRunner.CommandStatus from devices.modules where moduleId='osconfig'"
2.5: Testar a conectividade do dispositivo (exemplo de ping)
Este exemplo usa o recurso CommandRunner
junto com ping
para testar a conectividade de rede da perspectiva do dispositivo.
az iot hub module-twin update --hub-name "$MY_IOT_HUB_NAME" -d device01 -m osconfig --desired '{"CommandRunner":{"__t":"c","CommandArguments":{"CommandId":"connectivity_test_1", "Action":3, "Arguments":"ping -c 2 example.com"}}}' --query "properties.desired.CommandRunner"
Assim como no exemplo anterior, a saída de az iot hub module-twin update
mostra que definimos a propriedade de comando desejada no gêmeo e usaremos uma segunda etapa para recuperar os resultados.
Tendo esperado pelo menos 30 segundos desde o comando anterior, use o seguinte para recuperar os resultados:
az iot hub query --hub-name "$MY_IOT_HUB_NAME" -q "select deviceId,properties.reported.CommandRunner.CommandStatus from devices.modules where moduleId='osconfig'"
2.6: Reinicializar ou desligar usando ações predefinidas do CommandRunner
O exemplo a seguir reinicializa o dispositivo. Se você quiser desligar, altere Action: 1
para Action: 2
no valor de propriedade desejado.
az iot hub module-twin update --hub-name "$MY_IOT_HUB_NAME" -d device01 -m osconfig --desired '{"CommandRunner":{"__t":"c","CommandArguments":{"CommandId":"my_reboot_command", "Action":1}}}' --query "properties.desired.CommandRunner"
Limpar recursos
Se você não pretende manter nenhum dos recursos, poderá excluí-los excluindo o grupo de recursos que você criou anteriormente.
az group delete --resource-group QuickstartOSConfig
Próximas etapas
- Este guia usou apenas um dispositivo para começar rapidamente. Para configurar dispositivos em escala, você pode usar o OSConfig junto com de Gerenciamento de Dispositivos do Hub IoT com o OSConfig.
- Para saber mais sobre OSConfig, consulte: documentação do OSConfig.