Creación y aprovisionamiento de un dispositivo IoT Edge en Linux con claves simétricas
Se aplica a: IoT Edge 1.4
En este artículo se proporcionan instrucciones de un extremo a otro para registrar y aprovisionar un dispositivo linux IoT Edge, que incluye la instalación de IoT Edge.
Cada dispositivo que se conecta a un centro de IoT tiene un identificador de dispositivo que se usa para realizar un seguimiento de las comunicaciones de la nube al dispositivo o del dispositivo a la nube . Puede configurar un dispositivo con su información de conexión, que incluye:
- Nombre de host del centro de IoT
- Id. de dispositivo
- Detalles de autenticación para conectarse a IoT Hub
Los pasos de este artículo le guiarán por un proceso denominado aprovisionamiento manual, donde se conecta un único dispositivo a su centro de IoT. Para el aprovisionamiento manual, tiene dos opciones para autenticar dispositivos IoT Edge:
Claves simétricas: cuando se crea una identidad de dispositivo en IoT Hub, el servicio crea dos claves. Debe colocar una de las claves en el dispositivo y este presenta la clave a IoT Hub al autenticarse.
Este método de autenticación es más rápido para comenzar, pero no es tan seguro.
X.509 autofirmado: cree dos certificados de identidad X.509 y colóquelos en el dispositivo. Cuando se crea una identidad de dispositivo nueva en IoT Hub, se proporcionan huellas digitales desde ambos certificados. Cuando el dispositivo se autentica en IoT Hub, presenta un certificado, y IoT Hub comprueba que el certificado coincide con su huella digital.
Este método de autenticación es más seguro y se recomienda para los escenarios de producción.
En este artículo se describe el uso de claves simétricas como método de autenticación. Si desea usar certificados X.509, consulte Creación y aprovisionamiento de un dispositivo IoT Edge en Linux mediante certificados X.509.
Nota
Si tiene muchos dispositivos para configurar y no quiere aprovisionar manualmente cada uno, siga uno de los artículos a continuación para obtener información sobre cómo funciona IoT Edge con IoT Hub Device Provisioning Service:
Prerrequisitos
En este artículo se muestra cómo registrar el dispositivo IoT Edge e instalar IoT Edge (también denominado IoT Edge runtime) en el dispositivo. Asegúrese de que tiene la herramienta de administración de dispositivos que prefiera, por ejemplo, la CLI de Azure y los requisitos del dispositivo antes de registrar e instalar el dispositivo.
Herramientas de administración de dispositivos
Puede usar Azure Portal, Visual Studio Code o la CLI de Azure para seguir los pasos para registrar el dispositivo. Cada utilidad tiene sus propios requisitos previos o es posible que tenga que instalarse:
Un centro de IoT gratuito o estándar en la suscripción de Azure.
Requisitos de los dispositivos
Dispositivo Linux X64, ARM32 o ARM64.
Microsoft publica paquetes de instalación para una variedad de sistemas operativos.
para la información más reciente sobre qué sistemas operativos se admiten actualmente en los escenarios de producción, consulte Sistemas compatibles con Azure IoT Edge.
Extensiones de Visual Studio Code
Si usa Visual Studio Code, hay extensiones de Azure IoT útiles que facilitarán la creación y el proceso de administración de dispositivos.
Instale las extensiones de Azure IoT Edge y Azure IoT Hub:
Registrar el dispositivo
Puede usar Azure Portal, Visual Studio Code o la CLI de Azure para registrar el dispositivo, según su preferencia.
En su centro de IoT en Azure Portal, los dispositivos IoT Edge se crean y administran por separado de los dispositivos IOT que no están habilitados para Edge.
Inicie sesión en Azure Portal y vaya a IoT Hub.
En el panel izquierdo, seleccione Dispositivos en el menú y, luego, elija Agregar dispositivo.
En la página Crear un dispositivo, proporcione la información siguiente:
- Cree un id. de dispositivo descriptivo, por ejemplo
my-edge-device-1
(todo en minúsculas). Copie este identificador de dispositivo, ya que lo usará más adelante. - Active la casilla Dispositivo IoT Edge.
- Seleccione Clave simétrica como el tipo de autenticación.
- Use la configuración predeterminada para generar automáticamente claves de autenticación, que conectan el nuevo dispositivo al centro.
- Cree un id. de dispositivo descriptivo, por ejemplo
Seleccione Guardar.
Debería ver el nuevo dispositivo en el centro de IoT.
Ahora que tiene un dispositivo registrado en IoT Hub, puede recuperar la información de aprovisionamiento utilizada para completar la instalación y el aprovisionamiento del entorno de ejecución de IoT Edge en el paso siguiente.
Visualización de dispositivos registrados y recuperación de la información de aprovisionamiento
Los dispositivos que usan la autenticación de claves simétricas necesitan sus cadenas de conexión para completar la instalación y el aprovisionamiento del entorno de ejecución de Azure IoT Edge. La cadena de conexión se genera para el dispositivo IoT Edge al crear el dispositivo. Para Visual Studio Code y la CLI de Azure, la cadena de conexión se encuentra en la salida JSON. Si usa el Azure Portal para crear el dispositivo, puede encontrar la cadena de conexión desde el propio dispositivo. Al seleccionar el dispositivo en ioT Hub, se muestra como Primary connection string
en la página del dispositivo.
Los dispositivos habilitados para edge que se conectan a IoT Hub aparecen en la página Dispositivos de IoT Hub. Si tiene varios dispositivos, puede filtrar la lista seleccionando el tipo Dispositivos Iot Edge y, a continuación, seleccione Aplicar.
Cuando esté listo para configurar el dispositivo, necesitará la cadena de conexión que vincula el dispositivo físico con su identidad en el centro de IoT. Los dispositivos que se autentican con claves simétricas tienen sus cadenas de conexión disponibles para copiarse en el portal. Para buscar la cadena de conexión en el portal:
- En la página Dispositivos, seleccione el IoT Edge id. de dispositivo de la lista.
- Copie el valor de la cadena de conexión primaria o la cadena de conexión secundaria. Cualquier clave funcionará.
Instalación de IoT Edge
En esta sección, preparará su máquina virtual Linux o dispositivo físico para IoT Edge. A continuación, instalará IoT Edge.
Ejecute los comandos siguientes para agregar el repositorio de paquetes y luego agregue la clave de firma de paquetes de Microsoft a la lista de claves de confianza.
Importante
El 30 de junio de 2022 se retiró Raspberry Pi OS Stretch de la lista de soporte técnico del sistema operativo de nivel 1. Para evitar posibles vulnerabilidades de seguridad, actualice el sistema operativo del host a Bullseye.
La instalación se puede realizar con unos pocos comandos. Abra un terminal y ejecute los comandos siguientes:
20.04:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
18.04:
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
Para más información sobre las versiones del sistema operativo, consulte Plataformas compatibles con Azure IoT Edge.
Nota
Los paquetes de software de Azure IoT Edge están sujetos a los términos de licencia que se encuentran cada paquete (usr/share/doc/{package-name}
o el directorio LICENSE
). Lea los términos de licencia antes de usar el 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.
Instalación de un motor del contenedor
Azure IoT Edge se basa en un entorno de ejecución de contenedor compatible con OCI. En los escenarios de producción, se recomienda utilizar el motor de Moby. El motor de Moby es el único motor de contenedor compatible oficialmente con IoT Edge. Las imágenes de contenedor de Docker CE/EE son totalmente compatibles con el entorno de ejecución de Moby.
Instale el motor de Moby.
sudo apt-get update; \
sudo apt-get install moby-engine
De manera predeterminada, el motor del contenedor Moby no establece límites de tamaño de registro de contenedor. Con el tiempo, esto puede hacer que el dispositivo se llene con registros y se quede sin espacio en disco. Sin embargo, puede configurar el registro para que se muestre localmente, aunque es opcional. Para más información sobre la configuración de registro, consulte Lista de comprobación de implementación de producción.
En los pasos siguientes se muestra cómo configurar el contenedor para que use local
el controlador de registro como mecanismo de registro.
Cree (si el archivo aún no está ahí) o abra el archivo de configuración del demonio de Docker en
/etc/docker/daemon.json
.Establezca el controlador de registro predeterminado en el controlador de registro
local
, tal como se muestra en el ejemplo siguiente.{ "log-driver": "local" }
Reinicie el motor de contenedores para que se apliquen los cambios.
sudo systemctl restart docker
Sugerencia
Si se producen errores al instalar el motor del contenedor Moby, compruebe la compatibilidad con Moby del kernel de Linux. Algunos fabricantes de dispositivos incrustados distribuyen imágenes de dispositivos que contienen kernels de Linux personalizados sin las características necesarias para la compatibilidad del motor del contenedor. Ejecute el siguiente comando, que usa el script check-config suministrado por Moby, para comprobar la configuración del kernel:
curl -ssl https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh chmod +x check-config.sh ./check-config.sh
En la salida del script, compruebe que todos los elementos que figuran en
Generally Necessary
yNetwork Drivers
estén habilitados. Si faltan características, puede habilitarlas si vuelve a generar el kernel a partir del origen y selecciona los módulos asociados para incluirlos en el archivo .config de kernel adecuado. Igualmente, si usa un generador de configuración de kernel comodefconfig
omenuconfig
, busque y habilite las características correspondientes y vuelva a generar el kernel como corresponda. Una vez que implemente el kernel recién modificado, vuelva a ejecutar el script check-config para comprobar que se han habilitado correctamente todas las características necesarias.
Instalación del entorno de ejecución de IoT Edge
El servicio IoT Edge proporciona y mantiene los estándares de seguridad en el dispositivo IoT Edge. El servicio se inicia en cada arranque e inicia el resto del entorno de ejecución de IoT Edge para arrancar el dispositivo.
Nota
A partir de la versión 1.2, el servicio de identidad de IoT controla el aprovisionamiento y la administración de identidades para IoT Edge y para otros componentes de dispositivo que necesitan comunicarse con IoT Hub.
Los pasos de esta sección representan el proceso típico para instalar la versión de IoT Edge más reciente en un dispositivo que tenga conexión a Internet. Si tiene que instalar una versión específica, como una versión preliminar, o tiene que realizar la instalación mientras está sin conexión, siga los pasos de Instalación sin conexión o de una versión específica, más adelante en este artículo.
Sugerencia
Si ya tiene un dispositivo IoT Edge que ejecuta una versión anterior y desea actualizar a la versión más reciente, siga los pasos descritos en Actualización del demonio de seguridad de IoT Edge y el entorno de ejecución. Las versiones más recientes son suficientemente diferentes de las versiones anteriores de IoT Edge para que sean necesarios pasos específicos para la actualización.
Instale la versión más reciente de IoT Edge y el paquete del servicio de identidad de IoT (si aún no está actualizado):
sudo apt-get update; \
sudo apt-get install aziot-edge defender-iot-micro-agent-edge
El defender-iot-micro-agent-edge
paquete incluye el microagente de seguridad de Microsoft Defender para IoT que proporciona visibilidad del punto de conexión en la administración de la posición de seguridad, vulnerabilidades, detección de amenazas, administración de flotas y mucho más para ayudarle a proteger los dispositivos de IoT Edge. Se recomienda instalar el microagente con el agente de Edge para habilitar la supervisión de seguridad y la protección de los dispositivos de Edge. Para obtener más información sobre Microsoft Defender para IoT, consulte ¿Qué es Microsoft Defender para IoT para generadores de dispositivos?.
Aprovisionamiento del dispositivo con su identidad de nube
Ahora que el motor de contenedor y el entorno de ejecución de IoT Edge están instalados en el dispositivo, está listo para configurar el dispositivo con su información de autenticación e identidad en la nube.
Puede configurar rápidamente el dispositivo IoT Edge con autenticación de clave simétrica mediante el siguiente comando:
sudo iotedge config mp --connection-string `PASTE_DEVICE_CONNECTION_STRING_HERE`
Este iotedge config mp
comando crea un archivo de configuración en el dispositivo y escribe la cadena de conexión en el archivo de configuración.
Aplique los cambios en la configuración.
sudo iotedge config apply
Para ver el archivo de configuración, puede abrirlo:
sudo nano /etc/aziot/config.toml
Implementación de módulos
Para implementar los módulos de IoT Edge, vaya al centro de IoT en el Azure Portal y, a continuación, haga lo siguiente:
Seleccione Dispositivos en el menú IoT Hub.
Seleccione el dispositivo para abrir su página.
Seleccione la pestaña Establecer módulos .
Dado que queremos implementar el IoT Edge módulos predeterminados (edgeAgent y edgeHub), no es necesario agregar ningún módulo a este panel, por lo que seleccione Revisar y crear en la parte inferior.
Verá la confirmación JSON de los módulos. Seleccione Crear para implementar los módulos.
Para más información, consulte Implementación de un módulo.
Comprobación de configuración correcta
Compruebe que el runtime se ha instalado y configurado correctamente en el dispositivo de IoT Edge.
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, use sudo
delante de los comandos.
Compruebe que el servicio del sistema IoT Edge esté en ejecución.
sudo iotedge system status
Una respuesta de estado correcta muestra los
aziot
servicios como en ejecución o listos.
Si necesita solucionar problemas del servicio, recupere los registros del servicio.
sudo iotedge system logs
Use la herramienta check
para comprobar el estado de la configuración y la conexión del dispositivo.
sudo iotedge check
Puede esperar un intervalo de respuestas que pueden incluir Aceptar (verde), Advertencia (amarillo) o Error (rojo).
Sugerencia
Use siempre sudo
para ejecutar la herramienta de comprobación, incluso después de que se actualicen los permisos. Para comprobar el estado de la configuración, la herramienta necesita privilegios elevados para acceder al archivo de configuración.
Nota
En un dispositivo recién aprovisionado, es posible que vea un error relacionado con IoT Edge Hub:
× preparación para producción: el directorio de almacenamiento del centro de Edge se conserva en el sistema de archivos host: errorno se pudo comprobar el estado actual del contenedor de EdgeHub.
Este error se espera en un dispositivo recién aprovisionado porque el módulo IoT Edge Hub aún no se está ejecutando. Asegúrese de que los módulos de IoT Edge se implementaron en los pasos anteriores. La implementación resuelve este error.
Como alternativa, puede ver un código de estado como 417 -- The device's deployment configuration is not set
. Una vez implementados los módulos, este estado cambiará.
Cuando el servicio se inicia 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.
Compruebe que el dispositivo y los módulos están implementados y en ejecución; para ello, consulte la página del dispositivo en el Azure Portal.
Una vez implementados y en ejecución los módulos, enumere los módulos en el dispositivo o la máquina virtual con el siguiente comando:
sudo iotedge list
Instalación sin conexión o de una versión específica (opcional)
Los pasos de esta sección corresponden a escenarios que no se tratan en los pasos de instalación estándar. Estos pueden incluir lo siguiente:
- Instalación de IoT Edge sin conexión
- Instalación de una versión candidata para lanzamiento
Siga los pasos de esta sección si desea instalar una versión específica del entorno de ejecución de Azure IoT Edge que no está disponible a través del administrador de paquetes. La lista de paquetes de Microsoft solo contiene un conjunto limitado de versiones recientes y sus subversiones, por lo que estos pasos son para cualquiera que quiera instalar una versión anterior o una versión candidata para lanzamiento.
Con los comandos curl, puede dirigirse a los archivos de componentes directamente desde el repositorio de GitHub de IoT Edge.
Nota
Si el dispositivo ejecuta actualmente IoT Edge versión 1.1 o anterior, desinstale los paquetes iotedge y libiothsm-std antes de seguir los pasos de esta sección. Para más información, consulte Actualización de 1.0 o 1.1 a la versión más reciente.
Vaya a Versiones de Azure IoT Edge y busque la versión de lanzamiento que desea tener como destino.
Expanda la sección Recursos para esa versión.
Cada versión debe tener archivos nuevos para IoT Edge y el servicio de identidad. Si va a instalar IoT Edge en un dispositivo sin conexión, descargue estos archivos con anterioridad. De lo contrario, use los comandos siguientes para actualizar esos componentes.
Busque el archivo aziot-identity-service que coincida con la arquitectura del dispositivo IoT Edge. Haga clic con el botón derecho en el vínculo del archivo y copie la dirección del vínculo.
Use el vínculo copiado en el comando siguiente para instalar esa versión del servicio de identidad:
curl -L <identity service link> -o aziot-identity-service.deb && sudo apt-get install ./aziot-identity-service.deb
Busque el archivo aziot-edge que coincida con la arquitectura del dispositivo IoT Edge. Haga clic con el botón derecho en el vínculo del archivo y copie la dirección del vínculo.
Use el vínculo copiado en el comando siguiente para instalar esa versión de IoT Edge.
curl -L <iotedge link> -o aziot-edge.deb && sudo apt-get install ./aziot-edge.deb
Ahora que el motor del contenedor y el entorno de ejecución de IoT Edge están instalados en el dispositivo, está preparado para el paso siguiente, que consiste en aprovisionar el dispositivo con su identidad de nube.
Desinstalación de IoT Edge
Si quiere quitar la instalación de IoT Edge de su dispositivo, use los siguientes comandos.
Quite el entorno de ejecución de Azure IoT Edge.
sudo apt-get autoremove --purge aziot-edge
Excluya la marca --purge
si planea reinstalar IoT Edge y usar la misma información de configuración en el futuro. La marca --purge
elimina todos los archivos asociados a IoT Edge, incluidos los archivos de configuración.
Al quitar el entorno de ejecución de IoT Edge, los contenedores que se hayan creado en él se detendrán, pero seguirán existiendo en el dispositivo. Observe todos los contenedores para ver cuáles permanecen.
sudo docker ps -a
Elimine los contenedores del dispositivo, incluidos los dos contenedores del entorno en tiempo de ejecución.
sudo docker rm -f <container name>
Por último, quite el entorno en tiempo de ejecución del contenedor del dispositivo.
sudo apt-get autoremove --purge moby-engine