Creación y aprovisionamiento de un dispositivo IoT Edge para Linux en Windows mediante TPM

Se aplica a:IoT Edge 1.4 checkmark IoT Edge 1.4

Importante

IoT Edge 1.4 es la versión admitida. Si está usando una versión anterior, consulte Actualización de IoT Edge.

En este artículo se proporcionan instrucciones para aprovisionar automáticamente un dispositivo Azure IoT Edge para Linux en Windows mediante un Módulo de plataforma segura (TPM). Puede aprovisionar automáticamente los dispositivos Azure IoT Edge con Azure IoT Hub Device Provisioning Service. Si no está familiarizado con el proceso de aprovisionamiento automático, revise la información general sobre el aprovisionamiento antes de continuar.

En este artículo, se describen dos metodologías. Seleccione sus preferencias en función de la arquitectura de la solución:

  • Aprovisionamiento automático de un dispositivo Linux en Windows con hardware de TPM físico.
  • Aprovisionamiento automático de un dispositivo Linux en Windows mediante un TPM simulado. Se recomienda esta metodología solo como escenario de prueba. Un TPM simulado no ofrece la misma seguridad que un TPM físico.

Las tareas son las siguientes:

  • Instalación de IoT Edge para Linux en Windows
  • Recuperación de la información de TPM del dispositivo
  • Cree una inscripción individual para el dispositivo.
  • Aprovisionamiento del dispositivo con su información de TPM

Requisitos previos

Recursos en la nube

  • Un centro de IoT activo.
  • Una instancia del servicio de aprovisionamiento de dispositivos de IoT Hub en Azure, vinculado al centro de IoT

Requisitos de los dispositivos

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 obtener más información, consulte Creación de un conmutador virtual 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.

Tendrá que instalar los controladores correctos en función de la arquitectura de GPU y es posible que necesite 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. Deberá reiniciar el proceso de instalación si decide realizar aceleración de GPU durante la instalación.

Herramientas de desarrollo

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 con el siguiente comando:

    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.

Nota:

Se necesita TPM 2.0 cuando se usa la atestación de TPM con el servicio de aprovisionamiento de dispositivos.

Solo puede crear inscripciones individuales, no de grupo, del servicio de aprovisionamiento de dispositivos cuando se usa un TPM.

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 en Windows.

    • X64/AMD64

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

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_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 de vCPU, 1 GB de RAM (representados 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, deberá instalar los requisitos previos detallados en Aceleración por 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.

    A successful deployment will say 'Deployment successful' at the end of the messages, PNG.

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

Hay algunos pasos para preparar el dispositivo para el aprovisionamiento con TPM. Deje abierta la implementación mientras prepara el dispositivo. Volverá a la implementación más adelante en el artículo.

Habilitación del acceso directo del TPM

La máquina virtual IoT Edge para Linux en Windows tiene una característica de TPM que se puede habilitar o deshabilitar. (Está deshabilitada de manera predeterminada). Cuando esta característica está habilitada, la máquina virtual puede acceder al TPM de la máquina host.

  1. Abra PowerShell en una sesión con privilegios elevados.

  2. Si aún no lo ha hecho, establezca la directiva de ejecución de su dispositivo en AllSigned para que pueda ejecutar las funciones de PowerShell de IoT Edge para Linux en Windows.

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    
  3. Active la característica de TPM.

    Set-EflowVmFeature -feature 'DpsTpm' -enable
    

Recuperación de la información de TPM del dispositivo

Para aprovisionar el dispositivo, necesita una Clave de aprobación para el chip TPM y el Id. de registro para el dispositivo. Proporcione esta información a la instancia de Device Provisioning Service para que el servicio pueda reconocer el dispositivo cuando este intente conectarse.

La clave de aprobación es única para cada chip TPM. Se obtiene del fabricante del chip TPM asociado. Puede derivar un Id. de registro único para el dispositivo del TPM, por ejemplo, creando un código hash SHA-256 de la clave de aprobación.

IoT Edge para Linux en Windows proporciona un script de PowerShell para ayudar a recuperar esta información del TPM. Para usar el script, siga estos pasos en el dispositivo:

  1. Abra PowerShell en una sesión con privilegios elevados.

  2. Ejecute el comando.

    Get-EflowVmTpmProvisioningInfo | Format-List
    

Creación de una inscripción del servicio de aprovisionamiento de dispositivos

Use la información de aprovisionamiento del TPM para crear una inscripción individual en servicio de aprovisionamiento de dispositivos.

Al crear una inscripción en el servicio de aprovisionamiento de dispositivos, 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 utilizada en la 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.

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 del servicio de aprovisionamiento de dispositivos de IoT Hub.

  2. En Configuración, seleccione Administrar inscripciones.

  3. Seleccione Agregar inscripción individual y, después, complete los pasos siguientes para configurar la inscripción:

    1. En Mecanismo, seleccione TPM.

    2. Proporcione la clave de aprobación y el identificador de registro que ha copiado de la máquina virtual o el dispositivo físico.

    3. Si quiere, proporcione un identificador para el dispositivo. Si no proporciona un id. de dispositivo, se usará el id. de registro.

    4. Seleccione Verdadero para declarar que esta máquina virtual o el dispositivo físico es un dispositivo IoT Edge.

    5. Elija el centro de IoT vinculado al que quiere conectar el dispositivo o seleccione Link to new IoT Hub (Vincular a un nuevo centro de IoT). Puede elegir varios centros y el dispositivo se asignará a uno de ellos según la directiva de asignación seleccionada.

    6. Si quiere, agregue un valor de etiqueta a Estado inicial de dispositivo gemelo. Puede usar etiquetas para los grupos de dispositivos de destino para la implementación del módulo. Para más información, consulte Implementación de módulos IoT Edge a escala.

    7. Seleccione Guardar.

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.

Aprovisionamiento del dispositivo con su identidad de nube

  1. Abra una sesión de PowerShell con privilegios elevados en el dispositivo Windows.

  2. Aprovisione el dispositivo usando el Id. de ámbito que ha recopilado de su instancia de Device Provisioning Service.

    Provision-EflowVM -provisioningType "DpsTpm" -scopeId "SCOPE_ID_HERE"
    

    Si ha inscrito el dispositivo mediante un identificador de registro personalizado, debe especificarlo también durante el aprovisionamiento:

    Provision-EflowVM -provisioningType "DpsTpm" -scopeId "SCOPE_ID_HERE" -registrationId "REGISTRATION_ID_HERE"
    

Comprobación de instalación correcta

Compruebe que IoT Edge para Linux en Windows se haya instalado y configurado correctamente en el dispositivo de IoT Edge.

Si el entorno de ejecución se inició correctamente, puede ir a IoT Hub y empezar a implementar módulos de IoT Edge en el dispositivo.

Puede comprobar que se ha utilizado la inscripción individual que ha creado en el servicio de aprovisionamiento de dispositivos. En Azure Portal, vaya a la instancia de Device Provisioning Service. Abra los detalles de la inscripción para la inscripción individual que ha creado. Tenga en cuenta que el estado de la inscripción está asignado y se muestra el id. de dispositivo.

Use los siguientes comandos en el dispositivo para comprobar que la instancia de IoT Edge se haya instalado e iniciado correctamente.

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

    Connect-EflowVm
    

    Nota:

    La única cuenta que puede usar SSH en la máquina virtual es el 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 con el comando de Linux siguiente:

    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.

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 en Device Provisioning Service permite establecer el id. de dispositivo y las etiquetas del dispositivo gemelo al mismo tiempo que se aprovisiona el nuevo dispositivo. Puede usar esos valores para dirigirse a dispositivos individuales o grupos de dispositivos con la administración automática de dispositivos.

Aprenda a implementar y supervisar módulos de IoT Edge a gran escala mediante Azure Portal o la CLI de Azure.