Tutorial: Device Update for Azure IoT Hub con el agente de paquetes en Ubuntu Server 18.04 (x64)
Device Update for IoT Hub admite actualizaciones basadas en imágenes, en paquetes y en scripts.
Las actualizaciones basadas en paquetes son actualizaciones dirigidas que solo modifican una aplicación o un componente específicos en el dispositivo. Esto conduce a un menor consumo de ancho de banda y ayuda a reducir el tiempo necesario para descargar e instalar la actualización. Normalmente, las actualizaciones basadas en paquetes también implican menos tiempo de inactividad de los dispositivos al aplicar una actualización y evitan la sobrecarga asociada a la creación de imágenes. Usan un manifiesto de APT que proporciona al agente de Device Update la información que necesita para descargar e instalar los paquetes especificados en el archivo de manifiesto de APT (y sus dependencias) desde un repositorio designado.
Este tutorial le guía por la actualización de Azure IoT Edge en Ubuntu Server 18.04 (x64) mediante el agente de paquetes de Device Update. Aunque en el tutorial se muestra cómo actualizar IoT Edge, con pasos similares puede actualizar otros paquetes, como el motor de contenedor que use.
Las herramientas y los conceptos de este tutorial se siguen aplicando, aunque tenga previsto usar una configuración de plataforma de sistema operativo diferente. Finalice esta introducción con un proceso de actualización completo. A continuación, elija la forma que prefiera para actualizar una plataforma de sistema operativo para profundizar en los detalles.
En este tutorial, aprenderá a:
- Descargar e instalar el agente de Device Update y sus dependencias.
- Agregar una etiqueta al dispositivo.
- Importar una actualización.
- Crear un grupo de dispositivos.
- Implementar una actualización del paquete.
- Supervisar la implementación de la actualización.
Requisitos previos
Si aún no lo ha hecho, cree una cuenta y una instancia de Device Update. Configure un centro de IoT.
Necesita la cadena de conexión de un dispositivo de IoT Edge.
Si ha usado el tutorial sobre el agente del simulador para realizar pruebas anteriores a esto, ejecute el siguiente comando para invocar el controlador APT e implementar actualizaciones de paquetes por vía inalámbrica en este tutorial.
# sudo /usr/bin/AducIotAgent --register-content-handler /var/lib/adu/extensions/sources/libmicrosoft_apt_1.so --update-type 'microsoft/a pt:1'
Preparación de un dispositivo
Prepare un dispositivo de forma automática o manual.
Uso del botón automatizado Implementar en Azure
Para mayor comodidad, en este tutorial se usa una plantilla de Azure Resource Manager basada en cloud-init que tiene como fin ayudarle a configurar rápidamente una máquina virtual de Ubuntu 18.04 LTS. Instala el entorno de ejecución de Azure IoT Edge y el agente de paquetes de Device Update. A continuación, configura automáticamente el dispositivo con la información de aprovisionamiento mediante la cadena de conexión del dispositivo IoT Edge (requisito previo) que proporcione. La plantilla de Resource Manager también evita la necesidad de iniciar una sesión de SSH para completar la instalación.
Para empezar, seleccione el botón:
Rellene los cuadros de texto disponibles:
- Suscripción: suscripción de Azure activa en la que se va a implementar la máquina virtual.
- Grupo de recursos: grupo de recursos existente o recién creado que va a contener la máquina virtual y sus recursos asociados.
- Región: la región geográfica en la que se implementará la máquina virtual. Este valor tiene como valor predeterminado la ubicación del grupo de recursos seleccionado.
- Prefijo de etiqueta DNS: valor requerido (de su elección) que se usa como prefijo del nombre de host de la máquina virtual.
- Nombre de usuario administrador: nombre de usuario al que se proporcionan privilegios raíz en la implementación.
- Cadena de conexión de dispositivo: cadena de conexión de un dispositivo que se ha creado en el centro de IoT de su elección.
- Tamaño de VM: tamaño de la máquina virtual que se va a implementar.
- Versión del SO Ubuntu: versión del sistema operativo Ubuntu que se va a instalar en la máquina virtual base. Deje el valor predeterminado sin modificar, ya que se establecerá en Ubuntu 18.04-LTS.
- Tipo de autenticación: elija sshPublicKey o contraseña según sus preferencias.
- Contraseña o clave de administrador: valor de la clave pública SSH o de la contraseña en función del tipo de autenticación que se haya escogido.
Una vez rellenos todos los cuadros, active la casilla situada en la parte inferior de la página para aceptar los términos. Seleccione Comprar para comenzar la implementación.
Confirme que la implementación finaliza correctamente. Aguarde unos minutos a que se complete la implementación para que las actividades posteriores a la instalación y la configuración terminen de instalar IoT Edge y el agente de actualización del paquete de dispositivos.
Se debe haber implementado un recurso de máquina virtual en el grupo de recursos seleccionado. Anote el nombre de la máquina, que tiene el formato
vm-0000000000000
. Anote también el nombre DNS asociado, que tiene el formato<dnsLabelPrefix>
.<location>
.cloudapp.azure.com.El nombre DNS se puede obtener en la sección Información general de la máquina virtual recién implementada en Azure Portal.
Sugerencia
Para conectarse a través de SSH a esta máquina virtual después de configurarla, use el nombre DNS asociado con el siguiente comando:
ssh <adminUsername>@<DNS_Name>
.Abra los detalles de configuración (consulte cómo definir el archivo de configuración aquí) con el comando siguiente. Establezca connectionType en "AIS" y connectionData como una cadena vacía.
/etc/adu/du-config.json
- Para reiniciar el agente de Device Update, ejecute el comando siguiente:
sudo systemctl restart adu-agent
Los paquetes de software de Device Update para Azure IoT Hub están sujetos a los siguientes términos de licencia:
- Licencia de actualización de dispositivos para IoT Hub
- Licencia de cliente de Optimización de distribución
Lea los términos de licencia antes de usar un paquete. La instalación y el uso de un paquete constituyen la aceptación de estos términos. Si no acepta los términos de licencia, no utilice ese paquete.
Preparación manual de un dispositivo
De forma parecida a los pasos automatizados mediante el script cloud-init, a continuación se indican los pasos manuales que se usan para instalar y configurar un dispositivo. Siga estos pasos para preparar un dispositivo físico.
Siga las instrucciones que se indican en Instalación del entorno de ejecución de Azure IoT Edge.
Nota
El agente de Device Update no depende de IoT Edge. Sin embargo, se basa en el demonio del servicio de identidad de IoT que se instala con IoT Edge (1.2.0 y versiones posteriores) para obtener una identidad y conectarse a IoT Hub.
Aunque no se trata en este tutorial, el demonio del servicio de identidad de IoT se puede instalar de forma independiente en dispositivos IoT basados en Linux. La secuencia de instalación es importante. El agente de paquetes de Device Update debe instalarse después del servicio de identidad de IoT. De lo contrario, el agente de paquetes no se registrará como componente autorizado para establecer una conexión a IoT Hub.
Instale los paquetes .deb del agente de Device Update:
sudo apt-get install deviceupdate-agent deliveryoptimization-plugin-apt
Escriba la cadena de conexión principal del módulo (o dispositivo) del dispositivo IoT, en función de cómo se aprovisionó el dispositivo con Device Update, en el archivo de configuración mediante la ejecución del siguiente comando:
/etc/adu/du-config.json
Para reiniciar el agente de Device Update, ejecute el comando siguiente:
sudo systemctl restart adu-agent
Los paquetes de software de Device Update para Azure IoT Hub están sujetos a los siguientes términos de licencia:
- Licencia de actualización de dispositivos para IoT Hub
- Licencia de cliente de Optimización de distribución
Lea los términos de licencia antes de usar un paquete. La instalación y el uso de un paquete constituyen la aceptación de estos términos. Si no acepta los términos de licencia, no utilice ese paquete.
Adición de una etiqueta al dispositivo
Inicie sesión en Azure Portal y vaya al centro de IoT.
En el panel izquierdo, en Dispositivos, busque el dispositivo IoT Edge y vaya al dispositivo gemelo o módulo gemelo.
En el módulo gemelo del agente de Device Update, cambie los valores de etiqueta de Device Update existentes a null para eliminarlos. Si usa la identidad del dispositivo con el agente de Device Update, realice estos cambios en el dispositivo gemelo.
Agregue un nuevo valor de etiqueta de Device Update como se muestra a continuación:
"tags": { "ADUGroup": "<CustomTagValue>" },
Importación de la actualización
Vaya a Versiones de Device Update en GitHub y seleccione la lista desplegable Recursos. Para descargar
Tutorial_IoTEdge_PackageUpdate.zip
, selecciónelo. Extraiga el contenido de la carpeta para detectar un manifiesto APT de muestra (sample-1.0.2-aziot-edge-apt-manifest.json) y su manifiesto de importación correspondiente (sample-1.0.2-aziot-edge-importManifest.json).Inicie sesión en Azure Portal y vaya a su instancia de IoT Hub con Device Update. En el panel izquierdo, en Administración automática de dispositivos, seleccione Actualizaciones.
Seleccione la pestaña Actualizaciones.
Seleccione + Importar nueva actualización.
Elija + Seleccionar uno del contenedor de almacenamiento. Seleccione una cuenta existente o cree una nueva mediante + Cuenta de almacenamiento. A continuación, seleccione un contenedor existente o cree uno nuevo mediante + Contenedor. Este contenedor se usa 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.
En el contenedor, seleccione Cargar y vaya hasta los archivos que descargó en el paso 1. Después de seleccionar todos los archivos de actualización, seleccione Cargar. A continuación, seleccione el botón Seleccionar para volver a la página Importar actualización.
En esta captura de pantalla se muestra el paso de importación. Es posible que los nombres de archivo no coincidan con los usados en el ejemplo.
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.
Se inicia el proceso de importación y la pantalla cambia a la sección Historial de importación. 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.
Obtenga más información sobre cómo importar actualizaciones.
Creación de un grupo de actualización
Vaya a la pestaña Grupos e implementaciones en la parte superior de la página.
Seleccione el botón Agregar grupo para crear un grupo.
Seleccione una etiqueta de IoT Hub y una clase de dispositivo en la lista. A continuación, seleccione Crear grupo.
Una vez creado el grupo, verá que se han actualizado la lista de grupos y el gráfico de Update Compliance. 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.
Debería ver el grupo recién creado y todas 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 implementar la mejor actualización disponible en el nuevo grupo definido por el usuario desde esta vista, seleccione Implementar junto al grupo.
Obtenga más información sobre cómo agregar etiquetas y crear grupos de actualizaciones.
Implementación de la actualización
Una vez creado el grupo, debería ver una nueva actualización disponible para el grupo de dispositivos, con un vínculo a la actualización en Mejor actualización. Puede que tenga que actualizar una vez. Más información sobre el cumplimiento de actualizaciones.
Para elegir el grupo de destino, seleccione el nombre del grupo. Se le dirigirá a los detalles del grupo en Group basics (Conceptos básicos del grupo).
Para iniciar la implementación, vaya a la pestaña Implementación actual. Seleccione el vínculo de implementación situado junto a la actualización deseada en la sección Actualizaciones disponibles. La mejor actualización disponible para un grupo determinado se indica con el término Óptima resaltado.
Programe la implementación para que se inicie inmediatamente o en el futuro. Seleccione Crear.
Sugerencia
De forma predeterminada, la fecha y hora de inicio es de 24 horas a partir de la hora actual. Asegúrese de seleccionar una fecha y hora diferentes si quiere que la implementación comience antes.
En Detalles de implementación, Estado cambia a Activo. La actualización implementada está marcada con (implementando).
Vea el gráfico de cumplimiento para comprobar que la actualización está en curso.
Una vez que el dispositivo se ha actualizado correctamente, puede ver que el gráfico de cumplimiento y los detalles de la implementación se actualizan para reflejar lo mismo.
Supervisar la implementación de actualizaciones
Seleccione la pestaña Historial de implementación en la parte superior de la página.
Seleccione el vínculo de detalles junto a la implementación que ha creado.
Seleccione Actualizar para ver los detalles de estado más recientes.
Ha completado correctamente una actualización integral del paquete mediante Device Update para IoT Hub en un dispositivo Ubuntu Server 18.04 (x64).
Limpieza de recursos
Cuando ya no los necesite, limpie la cuenta de Device Update, la instancia y el centro de IoT. Limpie también el dispositivo IoT Edge si creó la máquina virtual mediante el botón Implementar en Azure. Para limpiar los recursos, vaya a cada recurso individual y seleccione Eliminar. Antes de limpiar la cuenta de Device Update, debe limpiar la instancia de Device Update.
Pasos siguientes
Use los siguientes tutoriales para una demostración sencilla de Device Update for IoT Hub:
- Actualización de la imagen: Introducción a la imagen de Yocto de referencia de Raspberry Pi 3 B+ extensible a través de código abierto para compilar sus propias imágenes para otra arquitectura según sea necesario.
- Actualización del proxy: Introducción al agente binario de Device Update para dispositivos de bajada.
- Introducción al agente de referencia del simulador de Ubuntu (18.04 x64).
- Tutorial sobre Device Update for Azure IoT Hub para sistemas operativos en tiempo real de Azure.