Tutorial: Actualización de dispositivos para Azure IoT Hub mediante el agente de referencia del simulador de Ubuntu (18.04 x64)

En este tutorial se explica cómo llevar a cabo una actualización completa basada en una imagen con Device Update for IoT Hub. La actualización de dispositivos para Azure IoT Hub admite actualizaciones basadas en imágenes, en paquetes y en scripts.

Las actualizaciones con imágenes proporcionan un mayor nivel de confianza en el estado final del dispositivo. Normalmente, es más fácil replicar los resultados de una actualización basada en una imagen entre un entorno de preproducción y un entorno de producción, ya que no plantea las mismas dificultades que la administración de paquetes y sus dependencias. Debido a su naturaleza atómica, también se puede adoptar fácilmente un modelo de conmutación por error A/B.

En este tutorial aprenderá lo siguiente:

  • Asignar un dispositivo IoT a un grupo de Device Update usando etiquetas.
  • Descargar e instalar una imagen.
  • Importar una actualización.
  • Implementar una actualización basada en imágenes.
  • Supervisar la implementación de la actualización.

Requisitos previos

  • Crear una cuenta y una instancia de Device Update configuradas con un centro de IoT.

  • Tener un dispositivo Ubuntu 18.04. Puede ser un dispositivo físico o una máquina virtual.

  • Descargue el archivo ZIP denominado Tutorial_Simulator.zip de Recursos de versión en la versión más reciente y descomprímalo.

    Si el dispositivo de prueba es diferente del equipo de desarrollo, descargue el archivo ZIP en los dos.

    Puede usar wget para descargar el archivo ZIP. Reemplace <release_version> por la versión más reciente, por ejemplo 1.0.0.

    wget https://github.com/Azure/iot-hub-device-update/releases/download/<release_version>/Tutorial_Simulator.zip
    

Registro de un dispositivo y configuración de una identidad de módulo

Agregue un dispositivo al registro de dispositivos de su centro de IoT. Todos los dispositivos que se conectan al centro de IoT deben registrarse.

En esta sección, crearemos también una identidad de módulo. Los módulos son identidades independientes para componentes que existen en un dispositivo IoT, lo que permite una mayor granularidad cuando se tiene un dispositivo IoT que ejecuta varios procesos. En este tutorial, usará esta identidad de módulo para el agente de Device Update que se ejecuta en el dispositivo IoT. Para más información, consulte Uso de módulos gemelos en IoT Hub.

  1. Desde Azure Portal, vaya a su centro de IoT.
  2. En el panel izquierdo, seleccione Dispositivos. A continuación, seleccione Agregar dispositivo.
  3. En Id. de dispositivo, escriba un nombre para el dispositivo. Asegúrese de que la casilla Generación automática de claves esté activada.
  4. Seleccione Guardar.
  5. Volverá a la página Dispositivos y el dispositivo que ha creado debería estar en la lista. Seleccione ese dispositivo.
  6. Seleccione Agregar identidad de módulo.
  7. En Nombre de identidad de módulo, escriba un nombre para el módulo, por ejemplo, DUAgent.
  8. Seleccione Guardar.

Copia de la cadena de conexión del módulo

  1. En la vista del dispositivo, debe aparecer el nuevo módulo bajo el encabezado Identidades de módulo. Seleccione el nombre del módulo para abrir los detalles.
  2. Seleccione el icono Copiar situado junto a Cadena de conexión (clave principal). Guarde esta cadena de conexión para usarla cuando configure el agente de Device Update. Esta cadena es la cadena de conexión del módulo.

Adición de una etiqueta al módulo gemelo

  1. Todavía en la página de detalles de la identidad de módulo, seleccione Identidad de módulo gemela.

  2. Agregue un nuevo valor de etiqueta de Device Update en el mismo nivel que modelId y version en el archivo del gemelo, como se muestra a continuación:

    "tags": {
        "ADUGroup": "DU-simulator-tutorial"
    },
    

    Captura de pantalla de la etiqueta ADUGroup en el módulo gemelo.

    Cada dispositivo administrado por Device Update necesita esta etiqueta reservada, que asigna el dispositivo a un grupo de Device Update. Puede estar en el dispositivo gemelo o en un módulo gemelo, como se muestra aquí. Cada dispositivo puede estar asignado únicamente a un grupo de Device Update.

  3. 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 administrados por Device Update. En este tutorial, lo configuraremos para que se ejecute como un simulador y podamos ver cómo se puede aplicar una actualización a un dispositivo sin cambiar realmente la configuración del dispositivo.

  1. En el dispositivo IoT, 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   
    
  2. Instale los paquetes .deb del agente de Device Update.

    sudo apt-get update
    sudo apt-get install deviceupdate-agent
    
  3. Abra el archivo de configuración del agente.

    sudo nano /etc/adu/du-config.json
    
  4. Actualice los siguientes valores en el archivo de configuración:

    • manufacturer: "Contoso". Este valor se usa para clasificar el dispositivo IoT con el fin de determinar las actualizaciones.
    • model: "Video". Este valor se usa para clasificar el dispositivo IoT con el fin de determinar las actualizaciones.
    • name: "aduagent"
    • agents.connectionData: proporcione la cadena de conexión que copió de la identidad de módulo.
    • agents.manufacturer: "Contoso"
    • agents.model: "Video"

    Para obtener más información sobre los parámetros de este paso, consulte Archivo de configuración de Device Update para IoT Hub.

    Nota:

    También puede usar el servicio de identidad de IoT para aprovisionar el dispositivo. Para ello, instale el servicio de identidad de IoT antes de instalar el agente de Device Update. A continuación, configure el agente de Device Update con "connectionType": "AIS" y connectionData como una cadena en blanco en el archivo de configuración.

  5. Guarde y cierre el archivo. CTRL+X, Y y Enter.

  6. Configure el agente para que se ejecute como simulador. Ejecute el siguiente comando en el dispositivo IoT para que el agente de Device Update invoque al controlador del simulador para procesar una actualización de paquetes con SWUpdate (microsoft/swupdate:1).

      sudo /usr/bin/AducIotAgent --extension-type updateContentHandler --extension-id 'microsoft/swupdate:1' --register-extension /var/lib/adu/extensions/sources/libmicrosoft_simulator_1.so
    
  7. Descomprima el archivo Tutorial_Simulator.zip que descargó en los requisitos previos y copie el archivo sample-du-simulator-data.json en la carpeta tmp.

    cp sample-du-simulator-data.json /tmp/du-simulator-data.json
    

    Si /tmp no existe, ejecute lo siguiente:

    sudo mkdir/tmp
    sudo chown root:root/tmp
    sudo chmod 1777/tmp
    
  8. Cambie los permisos de la nueva clave.

    sudo chown adu:adu /tmp/du-simulator-data.json
    sudo chmod 664 /tmp/du-simulator-data.json
    
  9. Reinicie el agente de Device Update para aplicar los cambios.

     sudo systemctl restart deviceupdate-agent
    

Importación de una actualización

En esta sesión, utiliza los archivos TutorialImportManifest_Sim.importmanifest.json y adu-update-image-raspberrypi3.swu del Tutorial_Simulator.zip descargado en los requisitos previos. El archivo de actualización se reutiliza del tutorial de Raspberry Pi. Dado que la actualización de este tutorial está simulada, el contenido específico del archivo no importa.

  1. En la máquina de desarrollo, inicie sesión en Azure Portal y vaya al centro de IoT configurado con Device Update.

  2. En el panel de navegación, en Administración de dispositivos, seleccione Actualizaciones.

  3. Seleccione Importar una nueva actualización.

  4. Elija Seleccionar uno del contenedor de almacenamiento.

  5. Seleccione una cuenta de almacenamiento o elija + Cuenta de almacenamiento para crear una nueva. A continuación, seleccione un contenedor o elija + Contenedor para crear uno nuevo. Este contenedor se usará para almacenar provisionalmente los archivos de actualización para la importación.

    Nota

    Se recomienda usar un nuevo contenedor cada vez que importe una actualización para evitar la importación accidental de archivos de actualizaciones anteriores. Si no usa un contenedor nuevo, asegúrese de eliminar los archivos del contenedor existente antes de completar este paso.

    Captura de pantalla que muestra las cuentas de almacenamiento y los contenedores.

  6. En el contenedor, seleccione Cargar y vaya a los archivos que descargó en los requisitos previos. Seleccione los archivos TutorialImportManifest_Sim.importmanifest.json y adu-update-image-raspberrypi3.swu, y elija Cargar.

  7. Active la casilla de cada archivo y elija el botón Seleccionar para volver a la página Importar actualización.

    Captura de pantalla que muestra la selección de archivos cargados en el contenedor.

  8. En la página Importar actualización, revise los archivos que se importarán. A continuación, seleccione Importar actualización para iniciar el proceso de importación.

    Captura de pantalla que muestra los archivos cargados que se importarán como una actualización.

  9. Se inicia el proceso de importación y la pantalla cambia a la sección Historial de importación. La columna Estado muestra la importación como En ejecución mientras la importación está en curso, y Correcta, cuando se completa la importación. Seleccione el botón Actualizar para actualizar el estado.

  10. Cuando la columna Estado indique que la importación se ha realizado correctamente, seleccione el encabezado Available updates (Actualizaciones disponibles). Debería ver la actualización importada en la lista.

    Captura de pantalla que muestra la nueva actualización que aparece disponible.

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.

Visualización de grupos de dispositivos

Device Update usa grupos para organizar los dispositivos. Este servicio ordena 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.

  1. Vaya a la pestaña Grupos e implementaciones en la parte superior de la página Actualizaciones.

  2. Vea la lista de grupos y el gráfico de cumplimiento 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. Obtenga más información sobre Update Compliance.

    Captura de pantalla que muestra la vista de cumplimiento de actualizaciones.

    Debería ver un grupo de dispositivos que contiene el dispositivo simulado que ha configurado en este tutorial junto con las actualizaciones disponibles para los dispositivos del nuevo grupo. Si hay dispositivos que no cumplen los requisitos de clase de dispositivo del grupo, se mostrarán en un grupo no válido correspondiente.

Para más información sobre etiquetas y grupos, consulte Administración de grupos de dispositivos.

Implementación de la actualización

  1. En la pestaña Grupos e implementaciones, debe aparecer una nueva actualización disponible para el grupo de dispositivos. Debe haber un vínculo a la actualización debajo de Estado. Es posible que tenga que actualizar la página.

  2. Seleccione el nombre del grupo para ver los detalles.

  3. En la página de detalles del grupo, debe aparecer una nueva actualización disponible. Seleccione Implementar para iniciar la implementación.

    Captura de pantalla que muestra cómo iniciar la implementación de una actualización de un grupo.

  4. La actualización que hemos importado en la sección anterior aparece como la mejor actualización disponible para este grupo. Seleccione Implementar.

  5. Programe la implementación o iníciela sobre la marcha y elija Crear.

  6. En la página de detalles del grupo, vaya a la pestaña Actualizaciones actuales. En Detalles de la implementación, el campo Estado cambia a Activa.

  7. Una vez que el dispositivo se haya actualizado correctamente, vuelva a la página Actualizaciones. Deben aparecen actualizados los detalles del gráfico de cumplimiento y de la implementación para reflejar lo mismo.

Supervisar la implementación de actualizaciones

  1. Vuelva a la página de detalles del grupo y seleccione la pestaña Historial de implementación.

  2. Seleccione Ver los detalles de la implementación junto a la implementación que ha creado.

    Captura de pantalla que muestra Detalles de implementación.

  3. Seleccione Refresh (Actualizar) para ver los detalles de estado más recientes.

Ya ha completado una actualización basada en imágenes de un extremo a otro, para lo que ha usado Device Update for IoT Hub mediante el agente de referencia del simulador Ubuntu 18.04 (x64).

Limpieza de recursos

Si va a continuar con el siguiente tutorial, conserve los recursos de IoT Hub y Device Update.

Cuando ya no los necesite, puede eliminarlos en Azure Portal.

  1. Vaya a su grupo de recursos en Azure Portal.

  2. Elija los recursos que desea eliminar.

    • 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 elija Eliminar.

Pasos siguientes

En este tutorial, ha aprendido a importar e implementar una actualización basada en una imagen. A continuación, aprenda a actualizar paquetes de dispositivo.