Compartir a través de


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:

  1. En primer lugar, siga los pasos descritos en Creación de un entorno de laboratorio de OSConfig (con Azure IoT) en 5 minutos
  2. 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

  1. Necesitará una cuenta de Azure con una suscripción activa. Si es necesario, puede crear una cuenta gratuita.
  2. 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 de bash.
  3. 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 que muestra az extension add --name azure-iot

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 : az account show

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

Diagrama del contexto, en el que se muestra la CLI de Azure que se usa para crear IoT Hub y vm, y usarse para usar OSConfig

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>"

captura de pantalla del ejemplo de Bash que asigna el nombre único elegido para IOT Hub a la variable MY_IOT_HUB_NAME

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 del comando az group create

captura de pantalla de del comando az iot hub create

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 de comandos az iot de ejemplo

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 del comando az vm create

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 del comando ssh

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 de comandos apt

captura de pantalla 2 de comandos apt

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 de comandos aziotctl

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 de instalación de sudo apt -y osconfig

1.2.5: Salir de la sesión SSH

exit

captura de pantalla de salir de la sesión ssh y volver a la sesión de Cloud Shell

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 deviceIdde 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'"

captura de pantalla del comando az iot hub query

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'"

captura de pantalla de az iot query (adicional)

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'"

captura de pantalla de az iot query (otro ejemplo adicional)

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 timedatectly 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"

captura de pantalla del comando az iot hub module-twin update

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'"

captura de pantalla de az iot query (ejemplo de zona horaria)

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"

captura de pantalla del comando az iot hub module-twin update (ejemplo de ping)

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'"

captura de pantalla de az iot query (ejemplo de ping)

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"

captura de pantalla de az iot hub module-twin update (ejemplo de reinicio)

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 az group delete

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.