Creación y aprovisionamiento de un dispositivo IoT Edge en Linux con claves simétricas

Afecta a: icono Sí IoT Edge 1.1 Otras versiones: IoT Edge 1.2

Afecta a: icono Sí IoT Edge 1.2 Otras versiones: IoT Edge 1.1

En este artículo se proporcionan instrucciones completas para registrar y aprovisionar un dispositivo IoT Edge en Linux, incluida la instalación de IoT Edge.

Todos los dispositivos que se conectan a IoT Hub tienen 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. Configure un dispositivo con su información de conexión, que incluye el nombre de host del centro de IoT, el identificador de dispositivo y la información que el dispositivo usa para autenticarse en IoT Hub.

Los pasos de este artículo le guían a través de un proceso denominado aprovisionamiento manual, donde 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 explica cómo registrar un dispositivo IoT Edge e instalar IoT Edge en él. Estas tareas tienen requisitos previos y utilidades diferentes que se usan para realizarlas. Asegúrese de que cumple todos los requisitos previos antes de continuar.

Registro de dispositivos

Puede usar Azure Portal, Visual Studio Code o la CLI de Azure para obtener los pasos de registro del dispositivo. Cada utilidad tiene sus propios requisitos previos:

Un centro de IoT gratuito o estándar en la suscripción de Azure.

Instalación de IoT Edge

Dispositivo Linux X64, ARM32 o ARM64.

Microsoft ofrece paquetes de instalación para los sistemas operativos Ubuntu Server 18.04 y Raspberry Pi OS Stretch.

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.

Nota

La compatibilidad con dispositivos ARM64 está en versión preliminar pública.

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.

  1. Inicie sesión en Azure Portal y vaya a IoT Hub.

  2. En el panel izquierdo, seleccione IoT Edge en el menú y, a continuación, seleccione Agregar un dispositivo IoT Edge.

    Agrear un dispositivo IoT Edge desde Azure Portal

  3. En la página Crear un dispositivo, proporcione la información siguiente:

    • Cree un id. de dispositivo descriptivo. Anote este identificador de dispositivo, ya que lo usará más adelante.
    • Seleccione Clave simétrica como el tipo de autenticación.
    • Use la configuración predeterminada para la generación automática de claves de autenticación y para conectar el dispositivo nuevo a su centro.
  4. Seleccione Guardar.

Ahora que tiene un dispositivo registrado en IoT Hub, recupere la información que usa para completar la instalación y el aprovisionamiento del entorno de ejecución de Azure IoT Edge.

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.

Todos los dispositivos habilitados para Edge que se conectan al centro de IoT se enumeran en la página IoT Edge.

Uso de Azure Portal para visualizar todos los dispositivos IoT Edge del centro de IoT

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.

  1. En la página IoT Edge del portal, haga clic en el identificador de dispositivo en la lista de dispositivos de IoT Edge.
  2. Copie el valor de la cadena de conexión primaria o la cadena de conexión secundaria.

Tener Visual Studio Code

Todos los dispositivos que se conectan a IoT Hub se enumeran en la sección Azure IoT Hub del explorador de Visual Studio Code. Los dispositivos de IoT Edge se distinguen de los dispositivos que no son Edge con un icono diferente y por el hecho de que los módulos $edgeAgent y $edgeHub se implementan en cada dispositivo IoT Edge.

Uso de VS Code para visualizar todos los dispositivos IoT Edge del centro de IoT

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.

  1. Haga clic con el botón derecho en el identificador del dispositivo en la sección Azure IoT Hub.

  2. Seleccione Copy Device Connection String (Copiar la cadena de conexión del dispositivo).

    La cadena de conexión se copiará al portapapeles.

También puede seleccionar Get Device Info (Obtener información del dispositivo), si hace clic con el botón derecho del mouse en el menú para ver toda la información del dispositivo, incluyendo la cadena de conexión, en la ventana de salida.

Instalación de IoT Edge

En esta sección, preparará la máquina virtual Linux o el dispositivo físico para IoT Edge. A continuación, instalará IoT Edge.

Tendrá que completar dos pasos en el dispositivo antes de que esté listo para instalar el entorno de ejecución de IoT Edge. El dispositivo necesita acceso a los paquetes de instalación de Microsoft y requiere la instalación de un motor de contenedor.

Acceso a los paquetes de instalación de Microsoft

  1. Descargue el paquete de configuración del repositorio que coincida con el sistema operativo del dispositivo.

    • Ubuntu Server 18.04:

      curl https://packages.microsoft.com/config/ubuntu/18.04/multiarch/packages-microsoft-prod.deb > ./packages-microsoft-prod.deb
      
    • Raspberry Pi OS Stretch:

      curl https://packages.microsoft.com/config/debian/stretch/multiarch/packages-microsoft-prod.deb > ./packages-microsoft-prod.deb
      
  2. Instale el paquete de configuración para agregar el repositorio de paquetes de Microsoft y la clave pública GPG.

    sudo apt install ./packages-microsoft-prod.deb
    

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 utiliza un runtime 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.

  1. Actualice las listas de paquetes en el dispositivo.

    sudo apt-get update
    
  2. Instale el motor de Moby.

    sudo apt-get install moby-engine
    

    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 y Network 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 como defconfig o menuconfig, 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 demonio de seguridad de IoT Edge proporciona y mantiene los estándares de seguridad en el dispositivo IoT Edge. El demonio se inicia en cada arranque e inicia el resto del entorno de ejecución de IoT Edge para arrancar el dispositivo.

Los pasos de esta sección representan el proceso habitual para instalar la versión 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.

Actualice las listas de paquetes en el dispositivo.

sudo apt-get update

Instale IoT Edge versión 1.1.* junto con el paquete libiothsm-std:

sudo apt-get install iotedge

Nota

IoT Edge versión 1.1 es la rama de soporte técnico a largo plazo de IoT Edge. Si ejecuta una versión anterior, se recomienda instalar o actualizar a la revisión más reciente, ya que ya no se admiten las versiones anteriores.

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.

El servicio de identidad de IoT se introdujo junto con la versión 1.2 de IoT Edge. Este servicio controla el aprovisionamiento y la administración de identidades para IoT Edge y otros componentes de dispositivo que necesitan comunicarse con IoT Hub.

Los pasos de esta sección representan el proceso habitual para instalar la versión 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.

Nota

Los pasos de esta sección le muestran cómo instalar la versión 1.2 de IoT Edge.

Si ya tiene un dispositivo IoT Edge que ejecuta una versión anterior y desea actualizar a 1.2, siga los pasos descritos en Actualización del demonio de seguridad de IoT Edge y el entorno de ejecución. La versión 1.2 es suficientemente diferente de las versiones anteriores de IoT Edge para que sean necesarios pasos específicos para la actualización.

Actualice las listas de paquetes en el dispositivo.

sudo apt-get update

Compruebe qué versiones de IoT Edge y el servicio de identidad de IoT están disponibles.

apt list -a aziot-edge aziot-identity-service

Para instalar la versión más reciente de IoT Edge y el paquete de servicio de identidad de IoT, use el comando siguiente:

sudo apt-get install aziot-edge

Aprovisionamiento del dispositivo con su identidad de nube

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 configurar el dispositivo con su información de identidad de nube y autenticación.

Abra el archivo de configuración en el dispositivo IoT Edge.

sudo nano /etc/iotedge/config.yaml

Busque las configuraciones de aprovisionamiento del archivo y quite la marca de comentario de la sección Manual provisioning configuration using a connection string, si aún no se ha hecho.

# Manual provisioning configuration using a connection string
provisioning:
  source: "manual"
  device_connection_string: "ADD_DEVICE_CONNECTION_STRING_HERE"

Actualice el valor de device_connection_string con la cadena de conexión desde un dispositivo IoT Edge. Asegúrese de que las demás secciones de aprovisionamiento estén comentadas. Asegúrese de que la línea provisioning: no tiene ningún espacio en blanco delante y de que los elementos anidados muestran una sangría de dos espacios.

Para pegar el contenido del portapapeles en Nano: Shift+Right Click o presione Shift+Insert.

Guarde y cierre el archivo.

CTRL + X, Y, Enter

Después de especificar la información de aprovisionamiento en el archivo de configuración, reinicie el demonio:

sudo systemctl restart iotedge

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'

El comando iotedge config mp crea un archivo de configuración en el dispositivo y escribe la cadena de conexión en el archivo.

Aplique los cambios en la configuración.

sudo iotedge config apply

Si desea ver el archivo de configuración, puede abrirlo:

sudo nano /etc/aziot/config.toml

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 systemctl status iotedge
sudo iotedge system status

Una respuesta de estado correcta es Ok.

Si necesita solucionar problemas del servicio, recupere los registros del servicio.

journalctl -u iotedge
sudo iotedge system logs

Use la herramienta check para comprobar el estado de configuración y conexión del dispositivo.

sudo iotedge check

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.

Vea todos los módulos que se ejecutan en el dispositivo IoT Edge. 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.

sudo iotedge list

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.

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 quiere instalar una versión específica del entorno de ejecución de Azure IoT Edge que no esté disponible mediante apt-get install. 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.

  1. Vaya a Versiones de Azure IoT Edge y busque la versión de lanzamiento que desea tener como destino.

  2. Expanda la sección Recursos para esa versión.

  3. Cada versión debe tener archivos nuevos para el demonio de seguridad de IoT Edge y hsmlib. 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.

    1. Busque el archivo libiothsm-std 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.

    2. Use el vínculo copiado en el comando siguiente para instalar esa versión de hsmlib:

      curl -L libiothsm-std_link_here -o libiothsm-std.deb && sudo apt-get install ./libiothsm-std.deb
      
    3. Busque el archivo iotedge 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.

    4. Use el vínculo copiado en el comando siguiente para instalar esa versión del demonio de seguridad de IoT Edge.

      curl -L iotedge_link_here -o iotedge.deb && sudo apt-get install ./iotedge.deb
      

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 obtener más información, consulte Actualización de 1.0 o 1.1 a 1.2.

  1. Vaya a Versiones de Azure IoT Edge y busque la versión de lanzamiento que desea tener como destino.

  2. Expanda la sección Recursos para esa versión.

  3. 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.

    1. 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.

    2. 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
      
    3. 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.

    4. 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 remove iotedge
sudo apt-get remove aziot-edge

Use la marca --purge si desea eliminar todos los archivos asociados a IoT Edge, incluidos los archivos de configuración. Excluya esta marca si desea reinstalar IoT Edge y usar la misma información de configuración en el futuro.

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 remove --purge moby-cli
sudo apt-get remove --purge moby-engine

Pasos siguientes

Siga implementando módulos de IoT Edge para información sobre cómo implementar módulos en el dispositivo.