Este artículo está diseñado para admitir personas que aprovisionan o administran dispositivos con Azure IoT. Si eso no suena como usted, considere la posibilidad de echar un vistazo a la documentación de Audiences for OSConfig.
La característica CommandRunner -->RunCommand le permite intercambiar cierta simplicidad para obtener flexibilidad. Cuando necesite, puede colocar un nivel de abstracción para realizar informes y configuraciones personalizados.
Ejemplos comunes de configuración y informes personalizados
Comprobación de la conectividad del dispositivo a puntos de conexión clave
Comprobación de que se están ejecutando demonios específicos
Depuración o solución de problemas de dispositivos, por ejemplo, mediante la recopilación de archivos de registro y su carga en el almacenamiento en la nube
Configure todos los dispositivos para usar la zona horaria deseada al registrar datos, generar marcas de tiempo, etc.
Informe sobre (o configure) sus propios componentes de dispositivo únicos que OSConfig nunca sabría de lo contrario.
Las posibilidades son infinitas, casi cualquier tarea que pueda realizar en un shell para un dispositivo, puede hacerlo con Azure IoT y OSConfig CommandRunner para flotas de dispositivos.
Estos ejemplos pueden servir como puntos de partida para adaptarse a su entorno único.
Cada ejemplo incluye pasos y capturas de pantalla para trabajar en la Azure Portal y para trabajar en Bash con la CLI de Azure.
Cada ejemplo también incluye variaciones para un dispositivo (por ejemplo, un escenario de solución de problemas) o para muchos dispositivos (por ejemplo, un escenario de aprovisionamiento o informes de configuración).
Qué esperar:
En las instrucciones de un solo dispositivo, leerá y escribirá las propiedades notificadas y deseadas directamente en el gemelo OSConfig para un dispositivo. En las instrucciones a escala, usará IoT Hub Configuraciones (también conocidas como Administración de dispositivos automática o ADM) para insertar propiedades deseadas en muchos gemelos y usar IoT Hub Consultas (de forma independiente o asociadas a configuraciones como métricas) para observar los resultados procedentes de los dispositivos.
Requisitos previos para los ejemplos siguientes
Si usa este artículo como referencia (por ejemplo, está aquí para copiar un nombre de propiedad), no hay requisitos previos.
Si desea probar los ejemplos en sistemas activos (recomendado), haga lo siguiente:
Necesitará una cuenta de Azure con un IoT Hub
En este artículo se da por supuesto cierta familiaridad con IoT Hub y herramientas relacionadas. Por ejemplo, se supone que está familiarizado con la creación de ioT Hubs y la conexión de dispositivos. Si prefiere una introducción paso a paso más prescriptiva para instalar y usar OSConfig desde cero, consulte Inicio rápido: Administración de un único dispositivo IoT virtual mediante la CLI de Azure en su lugar.
Necesitará al menos un dispositivo Linux con el agente OSConfig instalado y conectado a Azure IoT.
Asegúrese de que ha iniciado sesión en Azure Portal y puede acceder a la página Información general de la IoT Hub
Inicie sesión en Azure Portal con la cuenta que desea usar.
Inicio de Azure Cloud Shell en modo bash Captura de
(opcional) Use el comando az account show para asegurarse de que ha iniciado sesión en el contexto que desea usar para los ejemplos.
Sugerencia
Hay dos cosas que debe saber sobre el comportamiento de CommandRunner para tener éxito con estos ejemplos:
Como se muestra en los ejemplos, cada nueva solicitud debe incluir un nuevo valor para ( commandId puede ser cualquier cadena, por ejemplo, "MyCmd01", "MyCmd02").
El proceso es asincrónico, por lo que los resultados no están disponibles de forma instantánea. El procedimiento más sencillo es esperar aproximadamente un minuto después de iniciar una solicitud CommandRunner. Después de ese minuto, sin ningún paso adicional por su parte, los resultados están disponibles en properties.reported.CommandRunner.commandStatus. Para más información sobre el comportamiento de actualización, las actualizaciones de estado asincrónico, etc., consulte : Interacción con la característica CommandRunner de OSConfig y Azure IoT.
Ejemplo 1. Comprobación de la conectividad del dispositivo a puntos de conexión específicos
En este ejemplo, pedimos a los dispositivos que hagan ping www.github.com 3 veces. Observamos el código de salida del ping (correcto o incorrecto) y podemos observar la salida textual del comando ping.
En la página del portal del IoT Hub, vaya al módulo gemelo OSConfig para el dispositivo que desea administrar. A continuación, agregue lo siguiente a la properties.desired sección (seguida de una coma para separarla del siguiente elemento de properties.desired).
Puede comprobar la conectividad del dispositivo comprobando la respuesta al comando ping desde el propio módulo gemelo OSConfig. Desplácese hacia abajo del módulo gemelo para buscar las propiedades notificadas de CommandRunner. Buscar resultCode: 0 que indica que el comando se ha realizado correctamente y textResult que muestra la salida del comando ping .
En la página del portal de la Azure IoT Hub, elija Administración de dispositivos -->Configuraciones -->Agregar configuración del módulo.
Especifique un nombre y establezca la configuración del gemelo con la configuración del administrador de paquetes deseada. Establezca Module Twin Property en properties.desired.CommandRunner y establezca el contenido de la propiedad Module Twin en lo siguiente:
Cree una métrica personalizada con nombres correctos y los criterios de métrica , como se muestra a continuación. Esta consulta de métrica identificará todos los dispositivos que han hecho ping correctamente al punto de conexión.
SELECT deviceId FROM devices.modules
WHERE properties.reported.CommandRunner.commandStatus.resultCode = 0
AND properties.reported.CommandRunner.commandStatus.commandId = 'pingcmd'
Para los módulos de destino, especifique los criterios para los que los dispositivos están en el ámbito. En este ejemplo, estableceremos como destino todos los dispositivos habilitados para OSConfig, especificando una condición de destino de . FROM devices.modules where moduleId='osconfig'
Para observar qué dispositivos gemelos se han actualizado con el contenido de la propiedad del gemelo deseado (lado de la nube), consulte la métrica Applied (también conocida como appliedCount).
Para observar qué dispositivos han hecho ping correctamente al punto de conexión, consulte la métrica custom successfulpings que se creó anteriormente.
También puede comprobar la salida del comando ping usado en este ejemplo mediante la consulta siguiente. En la página del portal de la Azure IoT Hub, elija Administración de dispositivos :->Consultas en el panel de navegación izquierdo.
SELECT deviceId, properties.reported.CommandRunner.commandStatus
FROM devices.modules
WHERE properties.reported.CommandRunner.commandStatus.commandId = 'pingcmd'
Use el siguiente comando de ejemplo para establecer el gemelo OSConfig de un único dispositivo, reemplazando <el identificador> de dispositivo o <el nombre> del centro para que coincida con el entorno.
Puede comprobar la conectividad del dispositivo comprobando la respuesta al comando ping . Use el siguiente comando de ejemplo que obtiene el resultado del comando ping, reemplazando <el identificador> de dispositivo o <el nombre> del centro para que coincida con el entorno. Buscar resultCode: 0 que indica que el comando se ha realizado correctamente y textResult que muestra la salida del comando ping .
az iot hub query -q \
"SELECT properties.reported.CommandRunner.commandStatus.resultCode,
properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE moduleId='osconfig'
AND deviceId='<device id>'" --hub-name <hub name> --output table
Use el siguiente comando de ejemplo para crear una configuración de IoT Hub para comprobar la conectividad de red de una flota de dispositivos conectados a un IoT Hub. Esta configuración incluye criterios de destino, métricas personalizadas y la configuración deseada. Asegúrese de reemplazar el nombre> del< centro por el nombre del IoT Hub.
az iot hub configuration create -c "checkconnectivity_devicefleet" --content \
'{"moduleContent":
{"properties.desired.CommandRunner":
{"commandArguments":
{"commandId": "checkconnectivity_devicefleet",
"arguments": "ping -c 3 www.github.com",
"timeout": 120,
"singleLineTextResult": false,
"action": 3
}}}}' \
--target-condition "from devices.modules where moduleId='osconfig'" --priority 10 \
--metrics "{\"metrics\": {\"queries\": {\"successfulpings\":\"select deviceId from devices.modules \
where moduleId='osconfig' AND properties.reported.CommandRunner.commandStatus.resultCode=0 \
and properties.reported.CommandRunner.commandStatus.commandId='checkconnectivity_devicefleet'\"}}}" \
--hub-name <hub name>
Para observar qué dispositivos gemelos se han actualizado con el contenido de la propiedad del gemelo deseado (lado de la nube), consulte la métrica Applied (también conocida como appliedCount). Para observar qué dispositivos han hecho ping correctamente al punto de conexión, consulte la métrica custom successfulpings que se creó anteriormente.
Use los siguientes comandos para comprobar si las métricas aplicadas y personalizadas se han realizado correctamente.
az iot hub configuration show-metric --metric-id appliedCount \
-c "checkconnectivity_devicefleet" \
-n <hub name> --metric-type system
az iot hub configuration show-metric --metric-id successfulpings \
-c "checkconnectivity_devicefleet" \
-n <hub name> --metric-type user
Con el comando siguiente, puede comprobar los resultados del comando ping para cada dispositivo para ver si se realizó correctamente o no. Buscar resultCode: 0 que indica que el comando se ha realizado correctamente y textResult que muestra la salida del comando ping .
az iot hub query -q \
"SELECT deviceId, properties.reported.CommandRunner.commandStatus.resultCode,
properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE moduleId='osconfig'" \
--output table --hub-name <hub name> --output table
También puede comprobar la salida del comando ping usado en este ejemplo mediante la consulta siguiente. En la página del portal de la Azure IoT Hub, elija Administración de dispositivos :->Consultas en el panel de navegación izquierdo. textResult de la salida mostrará el contenido del archivo deseado.
SELECT deviceId, properties.reported.CommandRunner.commandStatus
FROM devices.modules
WHERE properties.reported.CommandRunner.commandStatus.commandId = 'checkconnectivity_devicefleet'
Ejemplo 2. Obtener contenido de /etc/ssh/sshd_config
En este ejemplo, usamos CommandRunner para capturar el contenido de un archivo de cada dispositivo. En este ejemplo no cargamos explícitamente el archivo en ningún servicio de almacenamiento en la nube, sino simplemente capturamos su contenido en el gemelo.
Importante
Las actualizaciones de propiedades gemelas están limitadas a 4 KB. El enfoque que se muestra aquí captura el contenido del archivo (de cat) insertado en el gemelo. Para archivos muy pequeños, este enfoque tiene la ventaja de no requerir ningún servicio de almacenamiento externo ni credenciales. Para archivos más grandes, este enfoque no es aplicable. En su lugar, incluiría lógica en el script o comando para cargar el archivo en el almacenamiento local o en la nube de su elección. Por ejemplo, puede conectarse a un recurso compartido cifs y copiar el archivo allí o insertar el contenido del archivo en Azure Storage.
En la página del portal de la IoT Hub, vaya al gemelo OSConfig del dispositivo que desea administrar. A continuación, agregue lo siguiente a la properties.desired sección (seguido de una coma para separarla del siguiente elemento de properties.desired). Puede reemplazar el nombre de archivo que prefiera en el campo argumentos siguiente.
Puede ver el contenido del archivo desde el propio módulo gemelo. Desplácese hacia abajo en el módulo gemelo para buscar commandStatus en las propiedades notificadas de CommandRunner; aquí verá esto en textResult. Buscar resultCode: 0 que indica que el comando se ha realizado correctamente y textResult que mostrará el contenido del archivo deseado.
En la página del portal de la Azure IoT Hub, elija Administración de dispositivos -->Configuraciones -->Agregar configuración del módulo.
Especifique un nombre y establezca la configuración de gemelos con la configuración deseada del administrador de paquetes. Establezca Module Twin Property (Propiedad de módulo gemelo)properties.desired.CommandRunner en y establezca module Twin Property Content (Contenido de propiedad del módulo gemelo) en lo siguiente:
Para los módulos de destino, especifique los criterios para los que los dispositivos están en el ámbito. En este ejemplo, estableceremos como destino todos los dispositivos habilitados para OSConfig, especificando una condición de destino de FROM devices.modules where moduleId='osconfig'
Para observar qué dispositivos gemelos se han actualizado con el contenido de la propiedad twin deseada (lado de la nube), consulte la métrica Applied (también conocida como appliedCount).
También puede leer el contenido del archivo en este ejemplo mediante la consulta siguiente. En la página del portal de la Azure IoT Hub, elija Administración de dispositivos->Consultas en el panel de navegación izquierdo. El contenido real del archivo se puede ver en commandStatus.textResult.
SELECT deviceId, properties.reported.CommandRunner.commandStatus
FROM devices.modules
WHERE properties.reported.CommandRunner.commandStatus.commandId = 'sshdconfigfile_contents'
Use el siguiente comando de ejemplo para iniciar la solicitud (colocando la solicitud en la properties.desired sección del gemelo).
Use el siguiente comando para ver los resultados. Buscar resultCode: 0 que indica que el comando se ha realizado correctamente y textResult que mostrará el contenido del archivo deseado.
az iot hub query --output table -q \
"SELECT properties.reported.CommandRunner.commandStatus.resultCode,
properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE moduleId='osconfig'
AND deviceID='<device id>'" --hub-name <hub name>
Use el siguiente comando de ejemplo para crear una configuración de IoT Hub. Esta configuración incluye criterios de destino, la configuración deseada. Asegúrese de reemplazar hub-name por el nombre del IoT Hub.
Use el siguiente comando para ver los resultados. Buscar resultCode: 0 que indica que el comando se ha realizado correctamente y textResult que muestra el contenido del archivo.
az iot hub query -q \
"SELECT deviceId, properties.reported.CommandRunner.commandStatus.resultCode,
properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE moduleId='osconfig'" \
--output table --hub-name <hub name>
Para observar qué dispositivos gemelos se han actualizado con el contenido de propiedad de gemelo deseado (en la nube), consulte la métrica Applied (también conocida como appliedCount).
Use el siguiente comando para comprobar la métrica Aplicada .
az iot hub configuration show-metric --metric-id appliedCount \
-c "sshdconfigfile_contents" \
-n <hub name> --metric-type system
También puede leer el contenido del archivo mediante la consulta siguiente. En la página del portal de la Azure IoT Hub, elija Administración de dispositivos->Consultas en el panel de navegación izquierdo.
SELECT deviceId, properties.reported.CommandRunner.commandStatus,
properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE properties.reported.CommandRunner.commandStatus.commandId = 'sshdconfigfile_contents'
Ejemplo 3. Implementación de un script en línea simple para establecer la zona horaria en UTC e informar sobre la zona horaria
En este ejemplo se muestra un caso de uso sencillo en el que tanto el script como los resultados se pueden controlar en línea como parte del gemelo. En el ejemplo siguiente se establecerá la zona horaria en UTC y, a continuación, se consultará la zona horaria una vez establecida.
En la página del portal de la IoT Hub, vaya al gemelo OSConfig para el dispositivo que desea administrar y agregue lo siguiente a la properties.desired sección, seguido de una coma para separarla del siguiente elemento de properties.desired. action=3 a continuación especifica la acción RunCommand .
Una vez ejecutado el comando, desplácese hacia abajo hasta el módulo gemelo para buscar commandStatus en las propiedades notificadas de CommandRunner, aquí verá que textResult muestra el conjunto de zona horaria actual en el dispositivo.
Para establecer o actualizar la zona horaria de una flota de dispositivos a UTC, como en este ejemplo, creará una configuración de IoT Hub (también conocida como IoT Hub Automatic Administración de dispositivos [ADM]).
En la página del portal de la Azure IoT Hub, elija Administración de dispositivos -->Configuraciones -->Agregar configuración del módulo.
Especifique un nombre y establezca la configuración de gemelos con la configuración deseada del administrador de paquetes. Establezca Module Twin Property (Propiedad de módulo gemelo)properties.desired.CommandRunner en y establezca module Twin Property Content (Contenido de propiedad del módulo gemelo) en lo siguiente:
Para los módulos de destino, especifique los criterios para los que los dispositivos están en el ámbito. En este ejemplo, estableceremos como destino todos los dispositivos habilitados para OSConfig, especificando una condición de destino de FROM devices.modules where moduleId='osconfig'
Cree una métrica personalizada con el nombre configurado correctamente y los criterios de métrica , como se muestra a continuación. Esta consulta de métrica identificará todos los dispositivos que han actualizado correctamente la zona horaria.
SELECT deviceId FROM devices.modules
WHERE properties.reported.CommandRunner.commandStatus.resultCode = 0
AND properties.reported.CommandRunner.commandStatus.commandId = 'settimezone_config'
Una vez que la configuración se aplica a los dispositivos, puede comprobar qué dispositivos gemelos se han actualizado con el contenido de la propiedad twin deseada (en la nube), comprobando la métrica Applied (también conocida como appliedCount). Para ver qué dispositivos han actualizado correctamente la zona horaria, consulte la métrica personalizada configurada correctamente que se creó anteriormente.
También puede leer la zona horaria actual en estos dispositivos de este ejemplo mediante la siguiente consulta. En la página del portal de la Azure IoT Hub, elija Administración de dispositivos->Consultas en el panel de navegación izquierdo. Puede comprobar la zona horaria actual en estos dispositivos desde commandStatus.textResult.
SELECT deviceId, properties.reported.CommandRunner.commandStatus
FROM devices.modules
WHERE properties.reported.CommandRunner.commandStatus.commandId = 'settimezone_config'
Use el ejemplo siguiente para establecer la zona horaria en el dispositivo y, a continuación, leer la zona horaria actual. action=3 a continuación especifica la acción RunCommand . reemplazando <el identificador> de dispositivo o <el nombre> del centro para que coincida con su entorno.
Puede consultar el resultado del comando anterior y comprobar la zona horaria actual en el dispositivo mediante el ejemplo siguiente. Buscar resultCode: 0 que indica que el comando se ha realizado correctamente y textResult mostrará la zona horaria actual.
az iot hub query -q \
"SELECT properties.reported.CommandRunner.commandStatus.resultCode,
properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE moduleId='osconfig'
AND deviceID='<device id>'" --hub-name <hub name> --output table
Use el siguiente comando de ejemplo para crear una configuración de IoT Hub. Esta configuración incluye criterios de destino, la configuración deseada. Asegúrese de reemplazar el nombre del centro por el nombre del IoT Hub.
az iot hub configuration create -c "settimezone_config" --content \
'{"moduleContent":
{"properties.desired.CommandRunner":
{"commandArguments":
{"commandId": "settimezone_cmd",
"arguments": "timedatectl set-timezone Etc/UTC | timedatectl | grep Time",
"timeout": 30,
"singleLineTextResult": false,
"action": 3
}}}}' \
--target-condition "from devices.modules where moduleId='osconfig'" --priority 10 \
--metrics "{\"metrics\": {\"queries\": {\"successfullyconfigured\":\"select deviceId from devices.modules \
where moduleId='osconfig' AND properties.reported.CommandRunner.commandStatus.resultCode=0 \
and properties.reported.CommandRunner.commandStatus.commandId='settimezone_cmd'\"}}}" \
--hub-name <hub-name>
Puede consultar que la zona horaria está establecida en los dispositivos mediante el ejemplo siguiente. La zona horaria actual se puede ver en commandStatus.textResult.
az iot hub query -q \
"SELECT deviceId, properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE moduleId='osconfig'" \
--output table --hub-name <hub name>
Para observar qué dispositivos gemelos se han actualizado con el contenido de propiedad de gemelo deseado (en la nube), consulte la métrica Applied (también conocida como appliedCount). Para observar qué dispositivos han hecho ping correctamente al punto de conexión, consulte la métrica personalizada configurada correctamente que se creó anteriormente.
Use los siguientes comandos para comprobar ambas métricas.
az iot hub configuration show-metric --metric-id appliedCount \
-c "settimezone_config" \
-n <hub name> --metric-type system
az iot hub configuration show-metric --metric-id successfullyconfigured \
-c "settimezone_config" \
-n <hub name> --metric-type user
Ejemplo 4. Implementación de un script de informes personalizado desde un repositorio en línea
En este ejemplo se muestra la llamada a un script ubicado fuera del gemelo. Por ejemplo, puede colocar los scripts en GitHub. Este patrón puede surgir por necesidad (el script es demasiado grande para el gemelo) o fuera de preferencia. El comando del gemelo es un contenedor sencillo. Descarga el script principal y lo ejecuta.
Importante
Para admitir este documento, hemos publicado un script de ejemplo. Este script de ejemplo se proporciona como un stand-in para su propio script en GitHub o en cualquier otro lugar. Recopila algunos puntos de datos del dispositivo, como una marca de tiempo, el estado del demonio y el espacio libre en disco. Debe inspeccionar scripts desde Internet, incluido este, antes de ejecutarlos en los dispositivos.
En la página del portal de la IoT Hub, vaya al gemelo OSConfig para el dispositivo que desea administrar y agregue lo siguiente a la properties.desired sección, seguido de una coma para separarla del siguiente elemento de properties.desired.
Desplácese hacia abajo del módulo gemelo para buscar CommandRunner -->commandStatus en la sección de propiedades notificadas del gemelo. Buscar resultCode: 0 que indica que el comando se ha realizado correctamente y textResult que muestra la salida del script ejecutado. A continuación se muestra una salida de ejemplo tomada del gemelo OSConfig de un dispositivo:
Para descargar e instalar una aplicación o ejecutar un script en una flota de dispositivos, como en este ejemplo, creará una configuración de IoT Hub (también conocida como IoT Hub automatic Administración de dispositivos [ADM]).
En la página del portal de la Azure IoT Hub, elija Administración de dispositivos -->Configuraciones -->Agregar configuración del módulo.
Especifique un nombre y establezca la configuración del gemelo con la configuración del administrador de paquetes deseada. Establezca Module Twin Propertyproperties.desired.CommandRunner en y establezca el contenido de la propiedad Module Twin en lo siguiente.
Para los módulos de destino, especifique los criterios para los que los dispositivos están en el ámbito. En este ejemplo, estableceremos como destino todos los dispositivos habilitados para OSConfig, especificando una condición de destino de . FROM devices.modules where moduleId='osconfig'
Cree una métrica personalizada con el nombre correctamenterun y los criterios de métrica , como se muestra a continuación. Esta consulta de métrica identificará todos los dispositivos en los que el script se ejecutó o ejecutó correctamente.
SELECT deviceId
FROM devices.modules
WHERE properties.reported.CommandRunner.commandStatus.resultCode = 0
AND properties.reported.CommandRunner.commandStatus.commandId = 'runcustomscript_configuration'
Una vez que la configuración se aplica a los dispositivos, puede comprobar qué dispositivos gemelos se han actualizado con el contenido de la propiedad del gemelo deseado (lado de la nube), comprobando la métrica Applied (también conocida como appliedCount). Para ver qué dispositivos han actualizado correctamente la zona horaria, consulte la métrica personalizada de ejecución correcta que se creó anteriormente.
También puede comprobar que la configuración anterior se aplicó correctamente y que la instalación se realizó correctamente mediante la consulta siguiente. En la página del portal de la Azure IoT Hub, elija Administración de dispositivos :->Consultas en el panel de navegación izquierdo. Buscar resultCode: 0 que indica que el comando se ha realizado correctamente y textResult que muestra la salida del script.
SELECT deviceId, properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE properties.reported.CommandRunner.commandStatus.commandId = 'runcustomscript_configuration'
En el ejemplo siguiente se muestra la descarga y ejecución de un script simple en un dispositivo específico. reemplazando <el identificador> de dispositivo o <el nombre> del centro para que coincida con el entorno.
Puede consultar el resultado del script anterior en el dispositivo mediante el ejemplo siguiente. Buscar resultCode: 0 que indica que el comando se ha realizado correctamente y textResult que muestra la salida del script.
az iot hub query -q \
"SELECT properties.reported.CommandRunner.commandStatus.resultCode,
properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE moduleId='osconfig' AND properties.reported.CommandRunner.commandStatus.commandId = 'runcustomscript'
AND deviceId = '<device id>'" \
--hub-name <hub name> --output table
Use el siguiente comando de ejemplo para crear una configuración de IoT Hub para descargar y ejecutar un script personalizado en varios dispositivos. Esta configuración incluye criterios de destino y la configuración deseada. Asegúrese de reemplazar el nombre del centro por el nombre del IoT Hub.
az iot hub configuration create -c "runcustomscript_multipledevices" --content \
'{"moduleContent":
{"properties.desired.CommandRunner":
{"commandArguments":
{"commandId": "runcustomscript_multipledevices",
"arguments": "curl -s -L 'https://learn.microsoft.com/azure/osconfig/samples/report-multiple-datapoints-from-device.sh' | tr -d \'\r'| bash",
"timeout": 60,
"singleLineTextResult": false,
"action": 3
}}}}' \
--target-condition "from devices.modules where moduleId='osconfig'" --priority 10 \
--metrics "{\"metrics\": {\"queries\": {\"successfulruns\":\"select deviceId from devices.modules \
where moduleId='osconfig' AND properties.reported.CommandRunner.commandStatus.resultCode=0 \
and properties.reported.CommandRunner.commandStatus.commandId='runcustomscript_multipledevices'\"}}}" \
--hub-name <hub-name>
Puede comprobar el resultado de la ejecución del script en los dispositivos mediante el ejemplo siguiente. Buscar resultCode: 0 que indica que el comando se ha realizado correctamente y textResult que muestra la salida del script ejecutado.
az iot hub query -q \
"SELECT deviceId, properties.reported.CommandRunner.commandStatus.resultCode,
properties.reported.CommandRunner.commandStatus.textResult
FROM devices.modules
WHERE moduleId='osconfig' AND properties.reported.CommandRunner.commandStatus.commandId = 'runcustomscript_multipledevices'" \
--output table --hub-name <hub name>
Pasos siguientes
Para obtener información general sobre los escenarios y funcionalidades de OSConfig, consulte: