Tutorial: Azure Device Update for IoT Hub con un agente de simulador
Azure Device Update for IoT Hub admite actualizaciones basadas en imágenes, en paquetes y en scripts. En este tutorial, se explica cómo llevar a cabo una actualización de Device Update completa, basada en imágenes y que usa un agente de simulador de Ubuntu.
Las actualizaciones de imágenes proporcionan un alto nivel de confianza en el estado final del dispositivo y no suponen los mismos desafíos de administración de paquetes y dependencias que las actualizaciones basadas en paquetes o en scripts. Es más fácil replicar los resultados de una actualización de imágenes entre un entorno de preproducción y de producción, o adoptar fácilmente un modelo de conmutación por error A/B.
En este tutorial ha:
- Asignar un dispositivo IoT a un grupo de Device Update usando etiquetas.
- Descargar e instalar una actualización de imágenes.
- Importar la actualización de imágenes.
- Implementar la actualización de imágenes.
- Vea el historial de implementación de actualizaciones.
Requisitos previos
- Una máquina virtual o física Ubuntu 18.04 x64
- Una cuenta y una instancia de Device Update configuradas con una instancia de IoT Hub
Registro y configuración de un dispositivo y un módulo
Agregue un dispositivo al registro de dispositivos de su centro de IoT. Todos los dispositivos que se conectan a IoT Hub deben registrarse.
- En el Azure Portal, abra la página de IoT Hub asociada a la instancia de Device Update.
- En el panel de navegación, seleccione Administración de dispositivos>Dispositivos.
- En la página Dispositivos, seleccione Agregar dispositivo.
- En Id. de dispositivo, escriba un nombre para el dispositivo. Asegúrese de que la casilla Generar claves automáticamente esté activada.
- Seleccione Guardar. El dispositivo aparece en la lista en la página Dispositivos.
Creación de una identidad de módulo
Después de registrar el dispositivo, cree una identidad de módulo. Los módulos son identidades independientes para componentes del dispositivo IoT, que permiten una granularidad más fina cuando el dispositivo ejecuta varios procesos.
En este tutorial, creará una identidad de módulo para el agente de Device Update que se ejecuta en el dispositivo. Para más información, consulte Uso de módulos gemelos en IoT Hub.
- En la página Dispositivos, seleccione el dispositivo que registró.
- En la página del dispositivo, seleccione Agregar identidad de módulo.
- En la página Agregar identidad de módulo, en Nombre de identidad del módulo, escriba un nombre para el módulo, como DeviceUpdateAgent.
- Seleccione Guardar. La nueva identidad del módulo aparece en la página del dispositivo en Identidades de módulo.
- Seleccione el nombre del módulo y, en la página Detalles de identidad del módulo, seleccione el icono Copiar junto a Cadena de conexión (clave principal). Guarde esta cadena de conexión del módulo para usarla cuando configure el agente de Device Update.
Adición de una etiqueta de grupo al módulo gemelo
Este servicio organiza automáticamente los dispositivos por grupos en función de las etiquetas y propiedades de compatibilidad que tienen asignadas. Cada dispositivo pertenece solo a un grupo, pero los grupos pueden tener varios subgrupos para ordenar diferentes clases de dispositivos.
Puede asignar una etiqueta a cualquier dispositivo que Device Update administre para asignar el dispositivo a un grupo de Device Update. La etiqueta puede estar en el dispositivo gemelo o en el módulo gemelo, como en este tutorial. Cada dispositivo puede estar asignado únicamente a un grupo de Device Update.
En la página Detalles de identidad de módulo, seleccione Identidad de módulo gemela.
En la página Identidad de módulo gemela, agregue una nueva etiqueta
DeviceUpdateGroup
al código JSON en el mismo nivel quemodelId
yversion
, como se indica a continuación:"tags": { "DeviceUpdateGroup": "DU-simulator-tutorial" },
Seleccione Guardar. El portal le vuelve a cambiar el formato al módulo gemelo para incorporar la etiqueta en la estructura JSON.
Instalación y configuración del agente de Device Update
El agente de Device Update se ejecuta en todos los dispositivos que Device Update administra. En este tutorial, instalará el agente de Device Update en el dispositivo Ubuntu 18.04 y lo configurará para que se ejecute como un simulador; se explica cómo puede aplicarse una actualización a un dispositivo sin cambiar la configuración del mismo.
Nota:
También puede usar el servicio de identidad de Azure IoT para aprovisionar el dispositivo. Para hacerlo, instale el servicio de identidad de Azure IoT antes de instalar el agente de Device Update. A continuación, configure el agente de Device Update con "connectionType": "AIS"
y deje connectionData
como una cadena en blanco en el archivo de configuración.
Agregue el repositorio de paquetes de Microsoft y, después, agregue la clave de firma de paquetes de Microsoft a la lista de claves de confianza.
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 los paquetes .deb del agente de Device Update.
sudo apt-get update sudo apt-get install deviceupdate-agent
Abra el archivo de configuración del agente de du-config.json.
sudo nano /etc/adu/du-config.json
Actualice du-config.json con los siguientes valores de ejemplo. Reemplace el marcador de posición
<connection string>
por la cadena de conexión que copió de la identidad del módulo. Para obtener más información sobre los parámetros, consulte Archivo de configuración de Device Update.manufacturer: "contoso"
model: "video"
agents.name: "aduagent"
agents.connectionData: <connection string>
agents.manufacturer: "contoso"
agents.model: "video"
El archivo du-config.json editado debe tener este aspecto:
{ "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" } ] }
Presione Ctrl+X para salir del editor y escriba y para guardar los cambios.
Para configurar el agente para que se ejecute como un simulador, ejecute el siguiente comando en el dispositivo IoT. El agente de Device Update invoca al controlador del simulador para procesar las actualizaciones que usan la extensión SWUpdate de Microsoft.
sudo /usr/bin/AducIotAgent --extension-type updateContentHandler --extension-id 'microsoft/swupdate:1' --register-extension /var/lib/adu/extensions/sources/libmicrosoft_simulator_1.so
Obtener los archivos del simulador
Descargue y extraiga el archivo Tutorial_Simulator.zip de la sección Recursos de la versión más reciente de las versiones de Device Update de GitHub en la máquina Ubuntu 18.04.
Puede usar
wget
para descargar el archivo ZIP. Reemplace<release_version>
por la versión más reciente, por ejemplo1.0.0
.wget https://github.com/Azure/iot-hub-device-update/releases/download/<release_version>/Tutorial_Simulator.zip
Copie el archivo sample-du-simulator-data.json de la carpeta extraída Tutorial_Simulator en la carpeta tmp.
cp sample-du-simulator-data.json /tmp/du-simulator-data.json
Nota:
Si la carpeta tmp no existe, créela de la siguiente manera:
sudo mkdir/tmp sudo chown root:root/tmp sudo chmod 1777/tmp
Cambie los permisos del archivo /tmp/sample-du-simulator-data.json.
sudo chown adu:adu /tmp/du-simulator-data.json sudo chmod 664 /tmp/du-simulator-data.json
Reinicie el agente de Device Update para aplicar los cambios.
sudo systemctl restart deviceupdate-agent
Importación de la actualización
Descargue y extraiga el archivo Tutorial_Simulator.zip de la sección Recursos de la versión más reciente de las versiones de Device Update de GitHub en la máquina de desarrollo, si es diferente del dispositivo IoT de Ubuntu 18.04. En esta sección, se usan los archivos TutorialImportManifest_Sim.importmanifest.json y adu-update-image-raspberrypi3.swu de la carpeta Tutorial_Simulator.
El archivo de actualización es el mismo que el del tutorial de Raspberry Pi. Dado que la actualización de este tutorial está simulada, el contenido específico del archivo no importa.
En la máquina de desarrollo, inicie sesión en Azure Portal y vaya al centro de IoT configurado con la instancia de Device Update.
En el panel de navegación, seleccione Administración de dispositivos>Actualizaciones.
En la página Actualizaciones, seleccione Importar una nueva actualización.
En la página Importar actualización, seleccione Seleccionar desde el contenedor de almacenamiento.
Seleccione una cuenta de almacenamiento o elija Cuenta de almacenamiento para crear una nueva.
Seleccione un contenedor o elija Contenedor para crear uno nuevo. Este contenedor se usa para almacenar provisionalmente los archivos de actualización para la importación.
Nota:
Para evitar la importación accidental de archivos de actualizaciones anteriores, use un nuevo contenedor cada vez que importe una actualización. Si no usa un contenedor nuevo, asegúrese de eliminar los archivos del contenedor existente.
En la página de contenedores, seleccione Cargar. Vaya a los archivos TutorialImportManifest_Sim.importmanifest.json y adu-update-image-raspberrypi3.swu, selecciónelos y, a continuación, seleccione Cargar.
Active las casillas de ambos archivos y, a continuación, seleccione Seleccionar para volver a la página Importar actualización.
En la página Importar actualización, revise los archivos que se van a importar y, a continuación, seleccione Importar actualización.
El proceso de importación comienza y puede seleccionar Ver historial de importación para ver el historial y el estado de importación. En la página Historial de actualizaciones, el campo Estado muestra Correcto cuando se completa la importación. Puede seleccionar Actualizar para actualizar el estado.
La actualización importada aparece ahora en la página Actualizaciones.
Para obtener más información sobre el proceso de importación, consulte Importación de una actualización a Device Update for IoT Hub.
Selección del grupo de dispositivos
Puede usar la etiqueta de grupo que aplicó al dispositivo para implementar la actualización en el grupo de dispositivos. Seleccione la pestaña Grupos e implementaciones de la parte superior de la página Actualizaciones para ver la lista de grupos e implementaciones y el gráfico de comprobación de actualizaciones.
En el gráfico de Update Compliance se muestra el recuento de dispositivos en los distintos estados de compatibilidad: En la actualización más reciente, Nuevas actualizaciones disponibles y Actualizaciones en curso. Para más información, consulte Cumplimiento de Device Update.
En Nombre de grupo, verá una lista de todos los grupos de dispositivos de los dispositivos conectados a este centro de IoT y sus actualizaciones disponibles, con vínculos para implementar las actualizaciones en Estado. Los dispositivos que no cumplen los requisitos de clase de dispositivo de un grupo aparecen en un grupo no válido correspondiente. Para más información sobre etiquetas y grupos, consulte Administración de grupos de dispositivos.
Debería ver el grupo de dispositivos que contiene el dispositivo simulado que configuró en este tutorial. Seleccione el nombre del grupo para ver los detalles.
Implementación de la actualización
En la página Detalles del grupo, debería ver una nueva actualización disponible para este grupo. Seleccione Implementar para iniciar la implementación.
La actualización que importó aparece como la mejor actualización disponible para este grupo. Seleccione Implementar.
Programe la implementación para que se inicie de inmediato y, a continuación, elija Crear.
Vaya a la pestaña Actualizaciones actuales. En Detalles de implementación, Estado cambia a Activo.
Una vez que el dispositivo se actualice correctamente, vuelva a la página Actualizaciones. Deberían aparecer actualizados los detalles del gráfico de cumplimiento y de la implementación para incluir la actualización instalada.
Ver el historial de implementación de actualizaciones
Vuelva a la página de detalles del grupo y seleccione la pestaña Historial de implementación.
Seleccione Ver los detalles de la implementación junto a la implementación que ha creado. Seleccione Actualizar para ver los detalles de estado más recientes.
Limpieza de recursos
Si va a continuar con el siguiente tutorial, conserve los recursos de IoT Hub y Device Update. Cuando ya no necesite los recursos creados en este tutorial, puede eliminarlos.
- En Azure Portal, vaya al grupo de recursos que contiene los recursos.
- Si desea eliminar todos los recursos del grupo, seleccione Eliminar grupo de recursos.
- Si solo desea eliminar algunos recursos, use las casillas para seleccionarlos y, a continuación, elija Eliminar.