Inicio rápido: Administración de un único dispositivo IoT virtual mediante la CLI de Azure
Importante
Este documento ya no se actualiza y se quitará. Para obtener up-toinstrucciones de fecha para probar escenarios de OSConfig:
- En primer lugar, siga los pasos descritos en Creación de un entorno de laboratorio de OSConfig (con Azure IoT) en 5 minutos
- A continuación, pruebe cualquiera de los escenarios de: ¿Qué puedo aprovisionar y administrar?
El objetivo de este inicio rápido es familiarizarse con la administración remota de dispositivos IoT/Edge a través de OSConfig para IoT. En la parte 1, configurará un entorno de prueba, incluida la creación de una máquina virtual para que actúe como un dispositivo IoT virtual. En la parte 2, realizará varias acciones de administración de dispositivos, por ejemplo:
- Recuperación remota de la dirección IP del dispositivo
- Probar remotamente la conectividad del punto de conexión desde la perspectiva del dispositivo
- Reiniciar el dispositivo de forma remota
- y mucho más
En este inicio rápido se usa un único dispositivo de ejemplo. Para usar OSConfig a escala, usaría Iot Hub Device Management servicios como plano de control, en lugar de comandos individuales de la CLI de Azure.
Prerrequisitos
- Necesitará una cuenta de Azure con una suscripción activa. Si es necesario, puede crear una cuenta gratuita.
- Usará el entorno de
de de Azure Cloud Shell. - NOTA: Si esta es la primera vez que usa Azure Cloud Shell, el portal le guiará a través de la creación de un espacio de almacenamiento antes de continuar. Esto es normal.
- NOTA: Azure Cloud Shell ya tiene las herramientas más recientes de la CLI de Azure y inicia sesión automáticamente en su cuenta de Azure. Si prefiere usar su propio entorno de
bash
en lugar de Cloud Shell, puede instalar y configurar la CLI de Azure en su propio entorno debash
.
- Necesitará la extensión IOT de Azure para la CLI de Azure, que se puede agregar mediante el siguiente comando:
az extension add --name azure-iot
captura de pantalla de
Comprobación de los requisitos previos
- Desde de Azure Cloud Shell (o su entorno de
bash
alternativo), asegúrese de que la CLI de Azure ha iniciado sesión en la cuenta de Azure y el contexto de suscripción que desea usar.
az account show
captura de pantalla del comando
Si necesita iniciar sesión con una cuenta diferente o cambiar suscripciones, puede usar los comandos az login
y az account set
.
Introducción al entorno de inicio rápido
Parte 1: Configuración del entorno
1.1: Creación de los recursos de Azure IoT
1.1.1: Definición de un nombre único para IoT Hub
Deberá crear un nombre único para IoT Hub, como "QuickStart12345" o "HelloWorld98765". Ese nombre se usará repetidamente en comandos posteriores, por lo que lo almacenaremos en una variable de Bash, de la siguiente manera:
# 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: Creación de un grupo de recursos y una instancia de IoT Hub
az group create --resource-group QuickstartOSConfig --location westus
az iot hub create --resource-group QuickstartOSConfig --name "$MY_IOT_HUB_NAME" --query id
captura de pantalla de
captura de pantalla de
Propina
Si el comando az iot hub create...
produce un error que indica que el nombre no estaba disponible, significa que el nombre que eligió ya estaba en uso en otra parte de Azure. Para resolverlo, repita el paso MY_IOT_HUB_NAME="<Your_Made_Up_Name_Here>"
anterior con un nombre nuevo y más único y vuelva a intentar el comando az iot hub create ...
.
Propina
No es inusual que el comando az iot hub create...
tarde unos minutos en completarse.
1.1.3: Creación del identificador de dispositivo y obtención de la cadena de conexión del 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
captura de pantalla de
Propina
Anote el valor de connectionString
devuelto por el último comando (comienza con HostName=
). Usará esta cadena de conexión en un paso posterior.
1.2: Creación de una máquina virtual de Azure para que actúe como dispositivo IoT virtual
Use el comando siguiente para crear una 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
captura de pantalla de
Propina
Anote la dirección IP devuelta por el último comando. Usará esta dirección en el paso siguiente.
1.3: Instalación del software cliente en el dispositivo IoT virtual
1.3.1: Establecimiento del acceso terminal al dispositivo virtual
Los siguientes comandos deben ejecutarse en la máquina virtual que acaba de crear. Use SSH para conectarse:
# 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>
captura de pantalla de
Propina
El cliente ssh puede requerir que escriba yes
para continuar. Esto es normal.
Propina
Antes de continuar, compruebe que ya está conectado al dispositivo IoT virtual. El símbolo del sistema debe haber cambiado de <your name>@azure:
a azureuser@device01:
. Si el símbolo del sistema no ha cambiado a azureuser@device01:
, vuelva a ejecutar el comando anterior ssh
.
1.3.2: En el 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
captura de pantalla de
1.3.3: En el dispositivo virtual, aplicar la cadena de conexión
Configure el dispositivo para autenticarse en Azure IoT mediante el comando siguiente. Usará el valor de cadena de conexión que obtuvo anteriormente en Creación de los recursos de Azure IoT.
sudo aziotctl config mp --connection-string "<your connection string>"
sudo aziotctl config apply
captura de pantalla de
1.3.4: En el dispositivo virtual, instalar el paquete OSConfig y observar que se está ejecutando
sudo apt install -y osconfig
sudo systemctl status osconfig | grep --color=never Active
captura de pantalla de
1.2.5: Salir de la sesión SSH
exit
Parte 2: Uso de OSConfig para IoT
¡Lo hiciste! Ahora que el entorno está preparado, podemos empezar a usar OSConfig para obtener y establecer la configuración y el estado de nivel de host a través de IoT Hub. En Azure Cloud Shell o en el equipo, use los siguientes comandos de la CLI de Azure para completar cada ejemplo.
2.1: ¿Es esto?
Empezaremos obteniendo el deviceId
de IoT Hub del dispositivo y mostraremos que OSConfig está activo.
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: Obtención del estado de red del dispositivo, como direcciones IP y servidores DNS, para cualquier dispositivo habilitado para OSConfig en IoT Hub
Hay muchos casos de uso para notificar el estado de red desde dispositivos administrados. Por ejemplo, es posible que necesite la dirección IP local para conectar una secuencia de vídeo IP local De forma similar, es posible que desee informar sobre los servidores DNS en uso para solucionar problemas o para asegurarse de que los dispositivos usan la infraestructura de red esperada. En el ejemplo siguiente se recuperan las direcciones IP y los servidores DNS asignados a cada adaptador de red.
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'"
Propina
La información ip devuelta es desde la perspectiva del dispositivo, que coincide con lo que se ejecutaría ifconfig
o ip address
localmente en el dispositivo. La dirección IP pública de Azure (usada anteriormente para SSH) es NAT enrutada fuera de la máquina virtual, por lo que no se ve aquí.
2.3: Configuración de la directiva de telemetría de Azure Device Health Service (ADHS) y comprobación del cumplimiento
ADHS es un agente de diagnóstico incluido en algunos dispositivos. La máquina virtual que acaba de crear no tiene instalado ADHS, pero todavía podemos establecer la directiva de forma proactiva como ejemplo.
El primer comando establece la propiedad deseada del gemelo para que ADHS 2
(lo que significa participar). El segundo comando compara las versiones deseadas (establecidas por usted, el administrador) y notificadas (enviadas por el dispositivo) de la propiedad para comprobar que el dispositivo ha recibido y aplicado la directiva.
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 una configuración personalizada (ejemplo de zona horaria)
La característica CommandRunner
de OSConfig le permite obtener y establecer casi cualquier cosa en el dispositivo. En este ejemplo se establece la zona horaria del sistema operativo del dispositivo en UTC. Aplicar una zona horaria uniforme en los puntos de conexión (independientemente de su ubicación física) es una práctica común para mejorar el control de marca de tiempo en una solución distribuida.
El siguiente comando de la CLI de Azure indica a OSConfig que establezca la zona horaria mediante timedatectl
y que informe de la zona horaria 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"
La salida muestra que hemos establecido el comando deseado en el gemelo. Para confirmar que funcionó, realizaremos un paso adicional. En primer lugar, esperaremos al menos 30 segundos tiempo para que el dispositivo reciba el comando, lo procese y actualice el gemelo con los resultados.
Después de esperar al menos 30 segundos desde el comando anterior, use lo siguiente para recuperar la salida:
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: Probar la conectividad del dispositivo (ejemplo de ping)
En este ejemplo se usa la característica CommandRunner
junto con ping
para probar la conectividad de red desde la perspectiva del 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"
Al igual que con el ejemplo anterior, la salida de az iot hub module-twin update
muestra que hemos establecido la propiedad de comando deseada en el gemelo y usaremos un segundo paso para recuperar los resultados.
Después de haber esperado al menos 30 segundos desde el comando anterior, use lo siguiente para recuperar los 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: Reinicio o apagado mediante acciones predefinidas de CommandRunner
En el ejemplo siguiente se reinicia el dispositivo. Si desea apagarse en su lugar, cambie Action: 1
a Action: 2
en el valor de propiedad deseado.
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"
Limpieza de recursos
Si no pretende conservar ninguno de los recursos, puede eliminarlos eliminando el grupo de recursos que creó anteriormente.
az group delete --resource-group QuickstartOSConfig
captura de pantalla de
Pasos siguientes
- En esta guía se usa solo un dispositivo para empezar a trabajar rápidamente. Para configurar dispositivos a escala, puede usar OSConfig junto con ioT Hub Device Management con OSConfig.
- Para obtener más información sobre OSConfig, consulte la documentación de OSConfig.