Compartir a través de


Creación y aprovisionamiento de IoT Edge para Linux en dispositivos Windows a gran escala mediante certificados X.509

Se aplica a:Marca de verificación de IoT Edge 1.5 IoT Edge 1.5

Importante

IoT Edge 1.5 LTS es la versión compatible. IoT Edge 1.4 LTS finaliza su ciclo de vida el 12 de noviembre de 2024. Si está usando una versión anterior, consulte Actualización de IoT Edge.

En este artículo se proporcionan instrucciones paso a paso para el aprovisionamiento automático de uno o varios ioT Edge para Linux en dispositivos Windows mediante certificados X.509. Aprovisione automáticamente dispositivos de Azure IoT Edge con el servicio de aprovisionamiento de dispositivos de Azure IoT Hub (DPS). Si no está familiarizado con el aprovisionamiento automático, revise la visión general del aprovisionamiento antes de continuar.

Estas son las tareas principales:

  1. Generar certificados y claves.
  2. Cree una inscripción individual para un único dispositivo o una inscripción de grupo para un conjunto de dispositivos.
  3. Implemente una máquina virtual Linux con el entorno de ejecución de IoT Edge instalado y conéctela a IoT Hub.

Los certificados X.509 permiten escalar la producción y simplificar el aprovisionamiento de dispositivos. Normalmente, los certificados X.509 están organizados en una cadena de certificados de confianza. La cadena comienza con un certificado raíz autofirmado o de confianza, y cada certificado de la cadena firma el siguiente certificado inferior. Este patrón crea una cadena de confianza delegada desde el certificado raíz a través de cada certificado intermedio al certificado final de dispositivo de bajada instalado en un dispositivo.

Requisitos previos

Recursos en la nube

  • Un centro de IoT activo.
  • Una instancia de IoT Hub Device Provisioning Service en Azure que esté vinculada a IoT Hub.

Requisitos del dispositivo

Un dispositivo Windows con los siguientes requisitos mínimos:

  • Requisitos del sistema

    • Windows 101/11 (Pro, Enterprise, IoT Enterprise)
    • Windows Server 20191/2022
      1 Windows 10 y Windows Server 2019, compilación mínima 17763 con todas las actualizaciones acumulativas actuales instaladas.
  • Requisitos de hardware

    • Memoria libre mínima: 1 GB
    • Espacio libre en disco mínimo: 10 GB
  • Compatibilidad con la virtualización

  • Soporte de red

    • Windows Server no incluye un conmutador predeterminado. Para poder implementar EFLOW en un dispositivo Windows Server, debe crear un conmutador virtual. Para más información, consulte Creación de conmutadores virtuales de Azure IoT Edge para Linux en Windows.
    • Las versiones de escritorio de Windows incluyen un conmutador predeterminado que se puede usar para la instalación de EFLOW. Si es necesario, puede crear su propio conmutador virtual personalizado.

Sugerencia

Si quiere usar módulos de Linux con aceleración por GPU en la implementación de Azure IoT Edge para Linux en Windows, debe tener en cuenta varias opciones de configuración.

Debes instalar los controladores correctos en función de la arquitectura de GPU y es posible que necesites acceder a una compilación del Programa Windows Insider. Para determinar sus necesidades de configuración y cumplir estos requisitos previos, consulte Aceleración por GPU para Azure IoT Edge para Linux en Windows.

Asegúrese de que se toma el tiempo necesario para cumplir los requisitos previos para la aceleración de GPU. Debe reiniciar el proceso de instalación si decide que desea la aceleración de GPU durante la instalación.

Herramientas para desarrolladores

Prepare el dispositivo de destino para la instalación de Azure IoT Edge para Linux en Windows y la implementación de la máquina virtual Linux:

  1. Establezca la directiva de ejecución en el dispositivo de destino en AllSigned. Puede comprobar la directiva de ejecución actual en un símbolo del sistema de PowerShell con privilegios elevados con el siguiente comando:

    Get-ExecutionPolicy -List
    

    Si la directiva de ejecución de local machine no es AllSigned, puede establecer la directiva de ejecución mediante:

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

Para obtener más información sobre el módulo de PowerShell de Azure IoT Edge para Linux en Windows, consulte la referencia de funciones de PowerShell.

Generación de los certificados de identidad del dispositivo

El certificado de identidad del dispositivo es un certificado de bajada que se conecta mediante una cadena de certificados de confianza con el certificado de la entidad de certificación X.509 (CA) superior. Establezca el nombre común (CN) del certificado de identidad del dispositivo en el identificador de dispositivo que quiere que use el dispositivo en IoT Hub.

Use certificados de identidad de dispositivo solo para aprovisionar el dispositivo IoT Edge y autenticar el dispositivo con Azure IoT Hub. No son certificados de firma, a diferencia de los certificados de CA que el dispositivo IoT Edge presenta a los módulos o los dispositivos de nivel inferior para la comprobación. Para obtener más información, consulte los detalles de uso de los certificados de Azure IoT Edge.

Después de crear el certificado de identidad del dispositivo, tiene dos archivos: un archivo .cer o .pem que tiene la parte pública del certificado y un archivo .cer o .pem con la clave privada del certificado. Si usa la inscripción de grupos en DPS, también necesita la parte pública de un certificado de entidad de certificación raíz o intermedio en la misma cadena de certificados de confianza.

Necesita los siguientes archivos para configurar el aprovisionamiento automático con X.509:

  • El certificado de identidad del dispositivo y su certificado de clave privada. Cargue el certificado de identidad del dispositivo en DPS si crea una inscripción individual. La clave privada se pasa al entorno de ejecución de Azure IoT Edge.
  • Un certificado de cadena completa, que tiene al menos la identidad del dispositivo y los certificados intermedios en él. La cadena de certificados completa se pasa al entorno de ejecución de Azure IoT Edge.
  • Un certificado intermedio o raíz de entidad de certificación de la cadena de certificados de confianza. Este certificado se carga en DPS si crea una inscripción de grupo.

Nota:

Actualmente, una limitación en libiothsm impide el uso de certificados que expiran el 1 de enero de 2038 o en una fecha posterior.

Uso de certificados de prueba (opcional)

Si no tiene una entidad de certificación disponible para crear nuevos certificados de identidad y desea probar este escenario, el repositorio git de Azure IoT Edge tiene scripts que puede usar para generar certificados de prueba. Use estos certificados solo para las pruebas de desarrollo y no los use en producción.

Para crear certificados de prueba, siga los pasos descritos en Creación de certificados de demostración para probar las características de dispositivo IoT Edge. Complete las dos secciones necesarias para configurar los scripts de generación de certificados y crear un certificado de entidad de certificación raíz. A continuación, siga los pasos para crear un certificado de identidad del dispositivo. Cuando termine, tendrá el siguiente par de claves y cadena de certificados:

  • <WRKDIR>\certs\iot-edge-device-identity-<name>-full-chain.cert.pem
  • <WRKDIR>\private\iot-edge-device-identity-<name>.key.pem

Necesita ambos certificados en el dispositivo IoT Edge. Si usa la inscripción individual en DPS, cargue el archivo .cert.pem. Si usa la inscripción de grupos en DPS, cargue también un certificado de ENTIDAD de certificación raíz o intermedio en la misma cadena de certificados de confianza. Si utiliza certificados de demostración, use el certificado <WRKDIR>\certs\azure-iot-test-only.root.ca.cert.pem para el registro de grupos.

Crear una inscripción de DPS

Use las claves y los certificados generados para crear una inscripción en DPS para uno o varios dispositivos IoT Edge.

Si desea aprovisionar un único dispositivo IoT Edge, cree una inscripción individual. Si necesita aprovisionar varios dispositivos, siga los pasos para crear una inscripción de grupo de DPS.

Al crear una inscripción en DPS, tiene la oportunidad de declarar un Estado inicial de dispositivo gemelo. En el dispositivo gemelo, puede establecer etiquetas para agrupar dispositivos por cualquier métrica que necesite en su solución, como la región, el entorno, la ubicación o el tipo de dispositivo. Estas etiquetas se usan para crear implementaciones automáticas.

Para más información sobre las inscripciones en Device Provisioning Service, vea Administración de inscripciones de dispositivos.

Creación de una inscripción individual de DPS

Las inscripciones individuales usan la parte pública del certificado de identidad de un dispositivo y la asocian con el certificado del dispositivo.

Sugerencia

Los pasos de este artículo son para Azure Portal, pero también puede crear inscripciones individuales mediante la CLI de Azure. Para más información, consulte az iot dps enrollment. Como parte del comando de la CLI, use la marca edge-enabled para especificar que la inscripción es para un dispositivo de IoT Edge.

  1. En Azure Portal, vaya a la instancia de IoT Hub Device Provisioning Service.

  2. En Configuración, seleccione Administrar inscripciones.

  3. Seleccione Add individual enrollment (Agregar inscripción individual) y, a continuación, complete los pasos siguientes para configurar la inscripción:

    • Mecanismo: Seleccione X.509.

    • Certificado principal .pem o .cer archivo: cargue el archivo público desde el certificado de identidad del dispositivo. Si usó los scripts para generar un certificado de prueba, elija el siguiente archivo:

      <WRKDIR>\certs\iot-edge-device-identity-<name>.cert.pem

    • Id. de dispositivo IoT Hub: Si lo desea, proporcione un identificador para el dispositivo. Puede usar identificadores de dispositivo para dirigirse a un dispositivo individual para la implementación del módulo. Si no especifica un id. de dispositivo, se usa el nombre común (CN) en el certificado X. 509.

    • Dispositivo IoT Edge: seleccione True para declarar que la inscripción es para un dispositivo IoT Edge.

    • Seleccione los centros de IoT a los que se puede asignar este dispositivo: elija la instancia de IoT Hub vinculada a la que quiere conectar el dispositivo. Puede elegir varios centros y el dispositivo se asignará a uno de ellos según la directiva de asignación seleccionada.

    • Estado inicial de dispositivo gemelo: agregue un valor de etiqueta para que se agregue al dispositivo gemelo, si lo desea. Puede usar etiquetas para los grupos de dispositivos de destino de la implementación automática. Por ejemplo:

      {
          "tags": {
             "environment": "test"
          },
          "properties": {
             "desired": {}
          }
      }
      
  4. Seleccione Guardar.

En Administrar inscripciones, puede ver el Id. de registro de la inscripción que acaba de crear. Anótelo, ya que puede usarlo para aprovisionar el dispositivo.

Ahora que existe una inscripción para este dispositivo, el entorno de ejecución de Azure IoT Edge puede aprovisionar automáticamente el dispositivo durante la instalación.

Instalación de IoT Edge

Implemente Azure IoT Edge para Linux en Windows en el dispositivo de destino.

Nota:

En el siguiente proceso de PowerShell se muestra cómo implementar IoT Edge para Linux en Windows en el dispositivo local. Si quiere realizar la implementación en un dispositivo de destino remoto mediante PowerShell, puede usar PowerShell remoto para establecer una conexión a un dispositivo remoto y ejecutar estos comandos de manera remota en ese dispositivo.

  1. En una sesión de PowerShell con privilegios elevados, ejecute cualquiera de los siguientes comandos en función de la arquitectura del dispositivo de destino para descargar IoT Edge para Linux o Windows.

    • X64/AMD64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_5_LTS_X64" -OutFile $msiPath
      
    • ARM64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_5_LTS_ARM64" -OutFile $msiPath
      
  2. Instale IoT Edge para Linux en Windows en el dispositivo.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
    

    Para especificar la instalación personalizada de IoT Edge para Linux en Windows y los directorios VHDX, agregue los parámetros INSTALLDIR="<FULLY_QUALIFIED_PATH>" y VHDXDIR="<FULLY_QUALIFIED_PATH>" al comando de instalación. Por ejemplo, si quiere usar la carpeta D:\EFLOW para la instalación y la carpeta D:\EFLOW-VHDX para el VHDX, puede usar el siguiente cmdlet de PowerShell.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
    
  3. Establezca la directiva de ejecución en el dispositivo de destino en AllSigned si todavía no lo está. Consulte los requisitos previos de PowerShell para los comandos a fin de comprobar la directiva de ejecución actual y establecer la directiva de ejecución en AllSigned.

  4. Creación de la implementación de IoT Edge para Linux en Windows. La implementación crea la máquina virtual Linux e instala el entorno de ejecución de IoT Edge de forma automática.

    Deploy-Eflow
    

    Sugerencia

    De forma predeterminada, el comando Deploy-Eflow crea la máquina virtual Linux con 1 GB de RAM, 1 núcleo de vCPU y 16 GB de espacio en disco. Sin embargo, los recursos que necesita la máquina virtual dependen en gran medida de las cargas de trabajo que implemente. Si la máquina virtual no tiene memoria suficiente para dar servicio a las cargas de trabajo, no se iniciará.

    Puede personalizar los recursos disponibles de la máquina virtual mediante los parámetros opcionales del comando Deploy-Eflow. Esto es necesario para implementar EFLOW en un dispositivo con los requisitos mínimos de hardware.

    Por ejemplo, el comando siguiente crea una máquina virtual con 1 núcleo vCPU, 1 GB de RAM (representado en MB) y 2 GB de espacio en disco:

    Deploy-Eflow -cpuCount 1 -memoryInMB 1024 -vmDataSize 2
    

    Para obtener información sobre todos los parámetros opcionales disponibles, vea Funciones de PowerShell para IoT Edge para Linux en Windows.

    Advertencia

    De forma predeterminada, la máquina virtual Linux EFLOW no tiene configuración de DNS. Las implementaciones que usan DHCP intentarán obtener la configuración de DNS propagada por el servidor DHCP. Compruebe la configuración de DNS para garantizar la conectividad a Internet. Para más información, consulte AzEFLOW-DNS.

    Puede asignar una GPU a la implementación para habilitar módulos de Linux con aceleración por GPU. Para obtener acceso a estas características, debe instalar los requisitos previos detallados en Aceleración de GPU para Azure IoT Edge para Linux en Windows.

    Para usar un acceso directo de GPU, agregue los parámetros gpuName, gpuPassthroughType y gpuCount a su comando Deploy-Eflow. Para obtener información sobre todos los parámetros opcionales disponibles, vea Funciones de PowerShell para IoT Edge para Linux en Windows.

    Advertencia

    La habilitación del acceso directo de dispositivos de hardware puede aumentar los riesgos de seguridad. Microsoft recomienda usar un controlador de mitigación de dispositivos del proveedor de GPU, si procede. Para obtener más información, vea Implementación de dispositivos gráficos mediante la asignación discreta de dispositivos.

  5. Escriba "Y" para aceptar los términos de licencia.

  6. Escriba "O" o "R" para activar o desactivar la opción Datos de diagnóstico opcionales en función de sus preferencias.

  7. Una vez completada la implementación, la ventana de PowerShell indica Implementación correcta.

    Una implementación correcta indicará

    Después de una implementación correcta, está listo para aprovisionar el dispositivo.

Aprovisionamiento del dispositivo con su identidad de nube

Después de instalar el entorno de ejecución en el dispositivo, configure el dispositivo con la información que usa para conectarse al servicio de aprovisionamiento de dispositivos e IoT Hub.

Asegúrese de que tiene la siguiente información:

  • El valor de Ámbito de id. del DPS. Encontrará este valor en la página de información general de la instancia de DPS en Azure Portal.
  • El archivo de cadena de certificados de identidad del dispositivo en el dispositivo.
  • El archivo de clave de identidad del dispositivo en el dispositivo.

Ejecute el comando siguiente en una sesión de PowerShell con privilegios elevados. Reemplace los valores de marcador de posición por tus propios valores.

Provision-EflowVm -provisioningType DpsX509 -scopeId PASTE_YOUR_ID_SCOPE_HERE -registrationId PASTE_YOUR_REGISTRATION_ID_HERE -identityCertPath PASTE_ABSOLUTE_PATH_TO_IDENTITY_CERTIFICATE_HERE -identityPrivateKey PASTE_ABSOLUTE_PATH_TO_IDENTITY_PRIVATE_KEY_HERE

Comprobación de instalación correcta

Compruebe que IoT Edge para Linux en Windows está instalado y configurado en el dispositivo IoT Edge.

Compruebe que se usa la inscripción individual que creó en el servicio de aprovisionamiento de dispositivos. Vaya a su instancia del servicio de aprovisionamiento de dispositivos en el portal de Azure. Abra los detalles de la inscripción para la inscripción individual que ha creado. El estado de la inscripción está asignado y se muestra el id. de dispositivo.

  1. Inicie sesión en la máquina virtual de IoT Edge para Linux en Windows con el comando siguiente en la sesión de PowerShell:

    Connect-EflowVm
    

    Nota:

    La única cuenta que se permite a SSH en la máquina virtual es la del usuario que la creó.

  2. Una vez que haya iniciado sesión, puede comprobar la lista de módulos de IoT Edge en ejecución mediante el siguiente comando de Linux:

    sudo iotedge list
    
  3. Si tiene que solucionar problemas del servicio IoT Edge, use los siguientes comandos de Linux.

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

      sudo iotedge system logs
      
    2. Use la herramienta check para comprobar el estado de configuración y conexión del dispositivo.

      sudo iotedge check
      

    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 de Edge Hub se conserva en el sistema de archivos host: error

    No se pudo comprobar el estado actual del contenedor de Edge Hub

    Este error se espera en un dispositivo recién aprovisionado porque el módulo de IoT Edge Hub no se está ejecutando. Para resolver el error, en IoT Hub, establezca los módulos del dispositivo y cree una implementación. La creación de una implementación para el dispositivo inicia los módulos en el dispositivo, incluido el módulo de IoT Edge Hub.

Al crear un dispositivo IoT Edge, se muestra el código 417 -- The device's deployment configuration is not set de estado en Azure Portal. Este estado es normal y significa que el dispositivo está listo para recibir una implementación de módulo.

Desinstalación de IoT Edge para Linux en Windows

Si quiere desinstalar Azure IoT Edge para Linux en Windows de su dispositivo, siga estos pasos.

  1. Abrir la configuración en Windows
  2. Seleccione Agregar o quitar programas.
  3. Seleccione la aplicación Azure IoT Edge.
  4. Seleccione Desinstalar.

Pasos siguientes

El proceso de inscripción del servicio de aprovisionamiento de dispositivos le permite establecer el identificador de dispositivo y las etiquetas de dispositivo gemelo al aprovisionar un nuevo dispositivo. Utiliza esos valores para apuntar a dispositivos individuales o grupos de dispositivos con gestión automática de dispositivos. Aprenda a implementar y supervisar módulos de IoT Edge a escala mediante Azure Portal o mediante la CLI de Azure.

También puede: