Inicio rápido: Implementación del primer módulo de IoT Edge en un dispositivo virtual Linux
Se aplica a: IoT Edge 1.5 IoT Edge 1.4
Importante
IoT Edge 1.5 LTS e IoT Edge 1.4 LTS son versiones compatibles. IoT Edge 1.4 LTS finaliza el ciclo de vida el 12 de noviembre de 2024. Si está en una versión anterior, consulte Actualización de IoT Edge.
Pruebe Azure IoT Edge en este inicio rápido mediante la implementación de código en contenedor en un dispositivo de IoT Edge virtual de Linux. IoT Edge permite administrar de forma remota el código de los dispositivos para que pueda enviar más cargas de trabajo al perímetro. En este inicio rápido, se recomienda usar una máquina virtual de Azure para el dispositivo IoT Edge, que le permite crear rápidamente una máquina de pruebas y, luego, eliminarla cuando haya terminado.
En esta guía de inicio rápido, aprenderá a hacer lo siguiente:
- Cree un centro de IoT Hub.
- Registre un dispositivo IoT Edge en su instancia de IoT Hub.
- Instale e inicie el entorno de ejecución de IoT Edge en un dispositivo virtual.
- Implemente un módulo de manera remota en un dispositivo IoT Edge.
Este inicio rápido le guía en el proceso de creación de una máquina virtual Linux configurada para ser un dispositivo IoT Edge. Después, podrá implementar un módulo de Azure Portal en el dispositivo. El módulo que se usa en este inicio rápido es un sensor simulado que genera datos de temperatura, humedad y presión. Los restantes tutoriales de Azure IoT Edge se basan en el trabajo que se realiza aquí mediante la implementación de módulos adicionales que analizan los datos simulados para obtener información empresarial.
Si no tiene una suscripción activa a Azure, cree una cuenta gratuita antes de comenzar.
Requisitos previos
Prepare el entorno para la CLI de Azure.
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
Recursos en la nube:
Un grupo de recursos para administrar todos los recursos que se van a usar en esta guía de inicio rápido. Usamos el nombre del grupo de recursos de ejemplo IoTEdgeResources tanto en este inicio rápido como en los siguientes tutoriales.
az group create --name IoTEdgeResources --location westus2
Crear un centro de IoT
Para empezar el inicio rápido, cree un centro de IoT con la CLI de Azure.
El nivel gratuito de IoT Hub funciona para esta guía de inicio rápido. Si ha usado IoT Hub en el pasado y ya tiene un centro creado, puede usarlo.
El código siguiente crea un centro F1 gratis en el grupo de recursos IoTEdgeResources. Reemplace {hub_name}
por un nombre único para su centro de IoT. El centro de IoT puede tardar algunos minutos en crearse.
az iot hub create --resource-group IoTEdgeResources --name {hub_name} --sku F1 --partition-count 2
Si se produce un error porque ya hay un centro gratis en la suscripción, cambie la SKU a S1. Cada suscripción no puede tener más de un centro de IoT gratuito. Si recibe un error que le indica que el nombre de IoT Hub no está disponible, significa que alguien más ya tiene un centro con ese nombre. Pruebe con uno nuevo.
Registro de un dispositivo de IoT Edge
Registre un dispositivo de IoT Edge con la instancia de IoT Hub recién creada.
Cree una identidad para el dispositivo de IoT Edge, con el fin de que pueda comunicarse con su centro de IoT. La identidad del dispositivo reside en la nube, y se usa una cadena de conexión de dispositivo única para asociar un dispositivo físico a una identidad de dispositivo.
Dado que los dispositivos de IoT Edge se comportan y se pueden administrar de manera diferente a los dispositivos de IoT típicos, declare que esta identidad es para un dispositivo de IoT Edge con la marca --edge-enabled
.
En Azure Cloud Shell, escriba el comando siguiente para crear un dispositivo llamado myEdgeDevice en el centro.
az iot hub device-identity create --device-id myEdgeDevice --edge-enabled --hub-name {hub_name}
Si recibe un error acerca de las claves de directiva de iothubowner, asegúrese de que Cloud Shell ejecuta la versión más reciente de la extensión azure-iot.
Vea la cadena de conexión del dispositivo, que vincula el dispositivo físico con su identidad en IoT Hub. Contiene el nombre del centro de IoT, el nombre del dispositivo y, después, una clave compartida que autentica las conexiones entre los dos. Volveremos a hacer referencia a esta cadena de conexión en la sección siguiente, en la que configurará un dispositivo IoT Edge.
az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name {hub_name}
Por ejemplo, la cadena de conexión debe ser similar a
HostName=contoso-hub.azure-devices.net;DeviceId=myEdgeDevice;SharedAccessKey=<DEVICE_SHARED_ACCESS_KEY>
.
Configuración de un dispositivo de IoT Edge
Cree una máquina virtual con el runtime de Azure IoT Edge en ella.
El runtime de IoT Edge se implementa en todos los dispositivos de IoT Edge. Tiene tres componentes. El demonio de seguridad de IoT Edge se inicia cada vez que se inicia un dispositivo IoT Edge y arranca el dispositivo mediante el inicio del agente de este. El agente de IoT Edge facilita la implementación y supervisión de los módulos en el dispositivo IoT Edge, incluido el centro de IoT Edge. El centro de IoT Edge administra las comunicaciones entre los módulos del dispositivo de IoT Edge y entre el dispositivo y la instancia de IoT Hub.
Durante la configuración del entorno en tiempo de ejecución, tendrá que proporcionar una cadena de conexión del dispositivo. Esta es la cadena que recuperó de la CLI de Azure. Esta cadena asocia el dispositivo físico con la identidad del dispositivo IoT Edge en Azure.
Implementación de un dispositivo IoT Edge
En esta sección se usa una plantilla de Azure Resource Manager para crear una máquina virtual e instalar en ella el runtime de IoT Edge. Si desea usar su propio dispositivo Linux, puede seguir los pasos de instalación que se encuentran en el artículo sobre el Aprovisionamiento manual de un dispositivo de Linux IoT Edge único y, después, volver a este inicio rápido.
Use el botón Implementar en Azure o los comandos de la CLI para crear el dispositivo IoT Edge basado en la plantilla iotedge-vm-deploy precompilada.
Implemente con la plantilla de Azure Resource Manager de IoT Edge.
Para los usuarios de Bash o Cloud Shell, copie el siguiente comando en un editor de texto, reemplace el texto del marcador de posición por su información y, después, cópielo en la ventana de Bash o de Cloud Shell:
az deployment group create \ --resource-group IoTEdgeResources \ --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/main/edgeDeploy.json" \ --parameters dnsLabelPrefix='<REPLACE_WITH_VM_NAME>' \ --parameters adminUsername='azureUser' \ --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <REPLACE_WITH_HUB_NAME> -o tsv) \ --parameters authenticationType='password' \ --parameters adminPasswordOrKey="<REPLACE_WITH_PASSWORD>"
Para los usuarios de PowerShell, copie el siguiente comando en la ventana de PowerShell y, después, reemplace el texto del marcador de posición por su propia información:
az deployment group create ` --resource-group IoTEdgeResources ` --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/main/edgeDeploy.json" ` --parameters dnsLabelPrefix='<REPLACE_WITH_VM_NAME>' ` --parameters adminUsername='azureUser' ` --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <REPLACE_WITH_HUB_NAME> -o tsv) ` --parameters authenticationType='password' ` --parameters adminPasswordOrKey="<REPLACE_WITH_PASSWORD>"
La plantilla usa los siguientes parámetros:
Parámetro | Descripción |
---|---|
resource-group | El grupo de recursos en el que se creará el recurso. Use el valor predeterminado IoTEdgeResources que hemos usado en este artículo, o bien especifique el nombre de un grupo de recursos existente en la suscripción. |
template-uri | Puntero a la plantilla de Resource Manager que se usa. |
dnsLabelPrefix | Cadena que se usará para crear el nombre de host de la máquina virtual. Reemplace el texto del marcador de posición por el nombre de la máquina virtual. |
adminUsername | Nombre de usuario de la cuenta de administrador de la máquina virtual. Use el nombre de usuario azureUser del ejemplo o especifique uno nuevo. |
deviceConnectionString | Cadena de conexión de la identidad del dispositivo en IoT Hub, que se usa para configurar el entorno de ejecución de Azure IoT Edge en la máquina virtual. El comando de la CLI que hay dentro de este parámetro toma la cadena de conexión automáticamente. Sustituya el texto del marcador de posición por su nombre de IoT Hub. |
authenticationType | El método de autenticación de la cuenta de administrador. En este inicio rápido se usa la autenticación mediante contraseña, pero también puede establecer este parámetro en sshPublicKey. |
adminPasswordOrKey | La contraseña o el valor de la clave SSH de la cuenta de administrador. Sustituya el texto del marcador de posición por una contraseña segura. La contraseña debe tener una longitud mínima de doce caracteres y, al menos, tres de los siguientes: caracteres en minúsculas, caracteres en mayúsculas, dígitos y caracteres especiales. |
Una vez completada la implementación, debe recibir la salida con formato JSON en la CLI que contiene la información de SSH para conectarse a la máquina virtual. Copie el valor de la entrada de public SSH de la sección outputs. Por ejemplo, el comando SSH debe tener un aspecto similar a ssh azureUser@edge-vm.westus2.cloudapp.azure.com
.
Visualización del estado del entorno de ejecución de Azure IoT Edge
El resto de los comandos de este inicio rápido tienen lugar en el propio dispositivo de IoT Edge, con el fin de que pueda ver lo que sucede en el dispositivo. Si usa una máquina virtual, conéctese a ella ahora con el nombre de usuario de administrador que configuró y el nombre DNS que el comando de implementación ha generado. También puede encontrar el nombre DNS en la página de información general de la máquina virtual en Azure Portal. Use el siguiente comando para conectarse a la máquina virtual. Reemplace {admin username}
y {DNS name}
con sus propios valores.
ssh {admin username}@{DNS name}
Una vez que se haya conectado a su máquina virtual, compruebe que el runtime se ha instalado y configurado correctamente en el dispositivo de IoT Edge.
Compruebe que IoT Edge esté en ejecución. El siguiente comando debe devolver un estado de Correcto si IoT Edge está en ejecución o proporcionar errores de servicio.
sudo iotedge system status
Sugerencia
Necesita privilegios elevados para ejecutar comandos
iotedge
. Cuando cierre la sesión en su máquina y la inicie de nuevo por primera vez después de instalar el entorno de ejecución de IoT Edge, sus permisos se actualizarán automáticamente. Hasta entonces, usesudo
delante de los comandos.Si necesita solucionar problemas del servicio, recupere los registros del servicio.
sudo iotedge system logs
Vea todos los módulos que se ejecutan en el dispositivo IoT Edge. Como el servicio se acaba de iniciar por primera vez, solo verá la ejecución del módulo edgeAgent. El módulo edgeAgent se ejecuta de forma predeterminada y le ayuda a instalar e iniciar todos los módulos adicionales que implemente en el dispositivo.
sudo iotedge list
El dispositivo IoT Edge está ya configurado. Está preparado para ejecutar módulos implementados en la nube.
Implementación de un módulo
Administre el dispositivo Azure IoT Edge desde la nube para implementar un módulo que enviará datos de telemetría a IoT Hub.
Una de las funcionalidades clave de Azure IoT Edge es la implementación de código en dispositivos de IoT Edge desde la nube. Los módulos de IoT Edge son paquetes ejecutables que se implementan como contenedores. En esta sección, implementará un módulo precompilado desde la sección Módulos de IoT Edge del Registro de artefactos Microsoft.
El módulo que se implementa en esta sección simula un sensor y envía los datos generados. Este módulo es un fragmento de código útil para empezar a trabajar con IoT Edge porque se pueden usar los datos simulados para desarrollo y pruebas. Si desea ver exactamente lo que hace este módulo, puede ver el código fuente del sensor de temperatura simulado.
Siga estos pasos para implementar el primer módulo.
Inicie sesión en Azure Portal y vaya a su instancia de IoT Hub.
En el menú de la izquierda, en Administración de dispositivos, seleccione Dispositivos.
Seleccione el identificador del dispositivo IoT Edge de destino en la lista.
Al crear un nuevo dispositivo IoT Edge, se mostrará el código de estado
417 -- The device's deployment configuration is not set
en Azure Portal. Este estado es normal y significa que el dispositivo está listo para recibir una implementación de módulo.En la barra superior, seleccione Establecer módulos.
Elija los módulos que desea ejecutar en el dispositivo. Puede elegir entre los módulos que ha creado usted mismo o las imágenes en un registro de contenedor. En este inicio rápido, implementará un módulo desde el registro de contenedor de Microsoft.
En la sección Módulos de IoT Edge, seleccione Agregar y, a continuación, elija Módulo de IoT Edge.
Actualice la siguiente configuración del módulo:
Configuración Valor Nombre del módulo de IoT SimulatedTemperatureSensor
URI de imagen mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:latest
Directiva de reinicio Siempre Estado deseado en ejecución Seleccione Siguiente: Rutas para continuar configurando rutas.
Agregue una ruta que envíe todos los mensajes desde el módulo de temperatura simulado a IoT Hub.
Configuración Value NOMBRE SimulatedTemperatureSensorToIoTHub
Valor FROM /messages/modules/SimulatedTemperatureSensor/* INTO $upstream
Seleccione Siguiente: Review + create (Revisar y crear).
Revise el archivo JSON y luego seleccione Crear. El archivo JSON define todos los módulos que se implementan en el dispositivo IoT Edge.
Nota
Cuando se envía una implementación nueva a un dispositivo IoT Edge, no se inserta nada en el dispositivo. En lugar de eso, el dispositivo consulta a IoT Hub de manera periódica para comprobar cualquier instrucción nueva. Si el dispositivo encuentra un manifiesto de implementación actualizado, usa la información sobre la nueva implementación para extraer las imágenes del módulo de la nube y, después, comienza a ejecutar localmente los módulos. Este proceso puede tardar unos minutos.
Después de crear los detalles de la implementación del módulo, el asistente lo lleva nuevamente a la página de detalles del dispositivo. Vea el estado de implementación en la pestaña Módulos.
Deben aparecer tres módulos: $edgeAgent, $edgeHub y SimulatedTemperatureSensor. Si se muestra SÍ para uno o varios de los módulos en Especificado en la implementación pero no en Notificado por el dispositivo, significa que el dispositivo IoT Edge todavía los está iniciando. Espere unos minutos y actualice la página.
Si tiene problemas para implementar módulos, consulte Solución de problemas de dispositivos IoT Edge desde Azure Portal.
Visualización de datos generados
En esta guía de inicio rápido, ha creado un nuevo dispositivo de IoT Edge y ha instalado el runtime de IoT Edge en él. Luego, ha usado Azure Portal para implementar un módulo de IoT Edge para que se ejecute en el dispositivo sin tener que realizar cambios en el propio dispositivo.
En este caso, el módulo que ha insertado genera los datos del entorno de ejemplo que puede usar posteriormente para las pruebas. El sensor simulado está supervisando una máquina y el entorno alrededor de esta. Por ejemplo, este sensor podría estar en una sala de servidores, en una fábrica o en un aerogenerador. El mensaje incluye la temperatura y la humedad ambiental, la temperatura y la presión de la máquina, y una marca de tiempo. Los tutoriales de IoT Edge usan los datos creados por este módulo como datos de prueba con fines de análisis.
Abra de nuevo el símbolo del sistema en su dispositivo IoT Edge, o utilice la conexión SSH de la CLI de Azure. Confirme que el módulo implementado desde la nube se está ejecutando en el dispositivo IoT Edge:
sudo iotedge list
Vea los mensajes que se envían desde el módulo del sensor de temperatura:
sudo iotedge logs SimulatedTemperatureSensor -f
Sugerencia
Los comandos de IoT Edge distinguen mayúsculas de minúsculas en los nombres de los módulos.
Limpieza de recursos
Si desea continuar con los tutoriales de IoT Edge, puede usar el dispositivo que ha registrado y configurado en esta guía de inicio rápido. En caso contrario, puede eliminar los recursos de Azure que creó para evitar gastos.
Si ha creado una máquina virtual y un centro de IoT en un nuevo grupo de recursos, puede eliminar dicho grupo y todos los recursos asociados. Vuelva a comprobar el contenido del grupo de recursos para asegurarse de que no haya nada que desee conservar. Si no desea eliminar todo el grupo, puede eliminar recursos individuales en su lugar.
Importante
La eliminación de un grupo de recursos es irreversible.
Quite el grupo IoTEdgeResources. La eliminación de un grupo de recursos puede tardar unos minutos.
az group delete --name IoTEdgeResources --yes
Puede confirmar que se ha eliminado el grupo de recursos mediante la visualización de la lista de grupos de recursos.
az group list
Pasos siguientes
En esta guía de inicio rápido, ha creado un dispositivo IoT Edge y ha usado la interfaz en la nube de Azure IoT Edge para implementar el código en el dispositivo. Ahora tiene un dispositivo de prueba que genera datos sin procesar acerca de su entorno.
En el siguiente tutorial, aprenderá a supervisar la actividad y el estado del dispositivo desde Azure Portal.