Compartir a través de


Tutorial: Configuración de un dispositivo Azure IoT Edge

Se aplica a:yes icon IoT Edge 1.1

Importante

IoT Edge 1.1 fecha de finalización del soporte técnico fue el 13 de diciembre de 2022. Consulte la página del ciclo de vida de productos de Microsoft para obtener información sobre cómo se admite este producto, servicio, tecnología o API. Para obtener más información sobre cómo actualizar a la versión más reciente de IoT Edge, consulte Update IoT Edge.

En este artículo, se configura una máquina virtual de Azure que ejecuta Linux para que sea un dispositivo De Azure IoT Edge que actúe como puerta de enlace transparente. Una configuración de puerta de enlace transparente permite a los dispositivos conectarse a Azure IoT Hub a través de la puerta de enlace sin saber que la puerta de enlace existe. Al mismo tiempo, un usuario que interactúa con los dispositivos de IoT Hub no es consciente del dispositivo de puerta de enlace intermedio. En última instancia, agregaremos análisis perimetrales al sistema agregando módulos de IoT Edge a la puerta de enlace transparente.

Nota:

Los conceptos de este tutorial se aplican a todas las versiones de IoT Edge, pero el dispositivo de ejemplo que se crea para probar el escenario ejecuta la versión 1.1 de IoT Edge.

Los pasos de este artículo suelen realizarse por un desarrollador en la nube.

En esta sección del tutorial, aprenderá a:

  • Cree certificados para permitir que tu dispositivo de puerta de enlace se conecte de forma segura a tus dispositivos aguas abajo.
  • Cree un dispositivo IoT Edge.
  • Cree una máquina virtual de Azure para simular el dispositivo IoT Edge.

Prerrequisitos

Este artículo forma parte de una serie de un tutorial acerca del uso de Azure Machine Learning en IoT Edge. Cada artículo de la serie se basa en el trabajo del artículo anterior. Si ha llegado directamente a este artículo, consulte el primer artículo de la serie.

Crear certificados

Para que un dispositivo funcione como puerta de enlace, debe conectarse de forma segura a los dispositivos de bajada. Con IoT Edge, puede usar una infraestructura de clave pública (PKI) para configurar conexiones seguras entre dispositivos. En este caso, se permite que un dispositivo IoT de nivel inferior se conecte a un dispositivo IoT Edge que actúe como puerta de enlace transparente. Para mantener una seguridad razonable, el dispositivo receptor debe confirmar la identidad del dispositivo IoT Edge. Para más información sobre cómo los dispositivos IoT Edge usan certificados, consulte Detalles de uso de certificados de Azure IoT Edge.

En esta sección, creamos los certificados autofirmados mediante una imagen de Docker que luego compilamos y ejecutamos. Decidimos usar una imagen de Docker para completar este paso porque reduce el número de pasos necesarios para crear los certificados en la máquina de desarrollo de Windows. Para comprender lo que automatizamos con la imagen de Docker, consulte Creación de certificados de demostración para probar las características del dispositivo IoT Edge.

  1. Inicie sesión en la máquina virtual de desarrollo.

  2. Cree una nueva carpeta con la ruta de acceso y el nombre c:\edgeCertificates.

  3. Si aún no se está ejecutando, inicie Docker para Windows desde el menú Inicio de Windows.

  4. Abre Visual Studio Code.

  5. Seleccione Archivo>Abrir carpeta y, a continuación, seleccione C:\source\IoTEdgeAndMlSample\CreateCertificates.

  6. En el panel Explorador , haga clic con el botón derecho en dockerfile y seleccione Compilar imagen.

  7. En el cuadro de diálogo, acepte el valor predeterminado para el nombre y la etiqueta de la imagen: createcertificates: latest.

    Captura de pantalla que muestra la creación de certificados en Visual Studio Code.

  8. Espere a que la compilación finalice.

    Nota:

    Es posible que vea una advertencia sobre una clave pública que no se encuentra. Es seguro omitir esta advertencia. Del mismo modo, verá una advertencia de seguridad que recomienda comprobar o restablecer los permisos de su imagen, la cual se puede omitir de manera segura para esta imagen.

  9. En la ventana del terminal de Visual Studio Code, ejecute el contenedor createcertificates.

    docker run --name createcertificates --rm -v c:\edgeCertificates:/edgeCertificates createcertificates /edgeCertificates
    
  10. Docker solicitará acceso a la unidad c:\ . Seleccione Compartirlo.

  11. Proporcione sus credenciales cuando se le solicite.

  12. Una vez que el contenedor termine de ejecutarse, compruebe los siguientes archivos en c:\edgeCertificates:

    • c:\edgeCertificates\certs\azure-iot-test-only.root.ca.cert.pem
    • c:\edgeCertificates\certs\new-edge-device-full-chain.cert.pem
    • c:\edgeCertificates\certs\new-edge-device.cert.pem
    • c:\edgeCertificates\certs\new-edge-device.cert.pfx
    • c:\edgeCertificates\private\new-edge-device.key.pem

Carga de certificados en Azure Key Vault

Para almacenar nuestros certificados de forma segura y hacer que sean accesibles desde varios dispositivos, cargaremos los certificados en Azure Key Vault. Como puede ver en la lista anterior, tenemos dos tipos de archivos de certificado: PFX y PEM. Trataremos el archivo PFX como certificados de Key Vault que se cargarán en Key Vault. Los archivos PEM son texto sin formato y los trataremos como secretos de Key Vault. Usaremos la instancia de Key Vault asociada al área de trabajo de Azure Machine Learning que creamos mediante la ejecución de los cuadernos de Jupyter Notebook.

  1. En Azure Portal, vaya al área de trabajo de Azure Machine Learning.

  2. En la página de información general del área de trabajo de Machine Learning, busque el nombre de Key Vault.

    Captura de pantalla que muestra cómo copiar el nombre del almacén de claves.

  3. En la máquina de desarrollo, cargue los certificados en Key Vault. Reemplaza <subscriptionId> y <keyvaultname> por la información del recurso.

    c:\source\IoTEdgeAndMlSample\CreateCertificates\upload-keyvaultcerts.ps1 -SubscriptionId <subscriptionId> -KeyVaultName <keyvaultname>
    
  4. Si se le solicita, inicie sesión en Azure.

  5. El script se ejecutará durante unos minutos con la salida que enumera las nuevas entradas de Key Vault.

    Captura de pantalla que muestra la salida del script de Key Vault.

Registro de un dispositivo de IoT Edge

Para conectar un dispositivo De Azure IoT Edge a un centro de IoT, primero registramos un dispositivo en el centro. Tomamos la cadena de conexión de la identidad del dispositivo en la nube y la usamos para configurar el entorno de ejecución en nuestro dispositivo IoT Edge. Después de que un dispositivo configurado se conecte al centro, podemos implementar módulos y enviar mensajes. También podemos cambiar la configuración del dispositivo IoT Edge físico cambiando su identidad de dispositivo correspondiente en IoT Hub.

Para este tutorial, registramos la nueva identidad de dispositivo mediante Visual Studio Code. También puede completar estos pasos mediante Azure Portal o la CLI de Azure. Cualquier método que elija, asegúrese de obtener la cadena de conexión del dispositivo ioT Edge. La cadena de conexión del dispositivo se puede encontrar en la página de detalles del dispositivo en Azure Portal.

  1. En la máquina de desarrollo, abra Visual Studio Code.

  2. Expanda el marco de Azure IoT Hub desde la vista Explorador de Visual Studio Code.

  3. Seleccione los puntos suspensivos y seleccione Crear dispositivo IoT Edge.

  4. Asigne un nombre al dispositivo. Para mayor comodidad, usamos el nombre aaTurbofanEdgeDevice para que se ordene en la parte superior de los dispositivos enumerados.

  5. El nuevo dispositivo aparece en la lista de dispositivos.

    Captura de pantalla que muestra una vista del dispositivo en el Explorador de Visual Studio Code.

Implementación de una máquina virtual de Azure

Usamos una máquina virtual Ubuntu 18.04 LTS con el entorno de ejecución de Azure IoT Edge instalado y configurado. La implementación usa una plantilla de Azure Resource Manager mantenida en el repositorio de proyectos iotedge-vm-deploy . Aprovisiona el dispositivo IoT Edge que registró en el paso anterior mediante la cadena de conexión que proporciona en la plantilla.

Puede implementar la máquina virtual mediante Azure Portal o la CLI de Azure. Mostraremos los pasos de Azure Portal. Consulte Ejecución de Azure IoT Edge en Máquinas virtuales Ubuntu para más información.

Implementación con el botón Implementar en Azure

  1. Para usar la iotedge-vm-deploy plantilla de ARM para implementar la máquina virtual Ubuntu 18.04 LTS, haga clic en el botón siguiente:

    Botón Desplegar en Azure para iotedge-vm-deploy

  2. En la ventana recién iniciada, rellene los campos de formulario disponibles.

    Campo Descripción
    Suscripción La suscripción de Azure activa en la que se implementará la máquina virtual.
    Grupo de recursos grupo de recursos existente o recién creado que va a contener la máquina virtual y sus recursos asociados.
    Prefijo de etiqueta DNS valor requerido de tu elección que se usa como prefijo del nombre de host de la máquina virtual.
    Nombre de usuario administrador Un nombre de usuario, al que se proporcionará privilegios de root en la implementación.
    Cadena de conexión del dispositivo cadena de conexión de un dispositivo que se ha creado en la instancia de IoT Hub de su elección.
    Tamaño de máquina virtual Tamaño de la máquina virtual que se va a implementar
    Versión del sistema operativo Ubuntu versión del sistema operativo Ubuntu que se va a instalar en la máquina virtual base.
    Ubicación región geográfica donde se va a implementar la máquina virtual. Este valor se establece de forma predeterminada en la ubicación del grupo de recursos seleccionado.
    Tipo de autenticación elija sshPublicKey o password, según cuál sea su preferencia.
    Contraseña o clave de administrador valor de la clave pública SSH o de la contraseña en función del tipo de autenticación que se haya escogido.
  3. Cuando se hayan rellenado todos los campos, active la casilla situada en la parte inferior de la página para aceptar los términos y seleccione Revisar y crearpara comenzar la implementación.

  4. Vaya a su máquina virtual en el portal de Azure. Puede encontrarlo a través del grupo de recursos o seleccionando Máquinas virtuales en Servicios de Azure en la página de aterrizaje del portal.

  5. Anote el nombre DNS de la máquina virtual. Lo necesitará para iniciar sesión en la máquina virtual.

Conexión al dispositivo IoT Edge

  1. Abra un símbolo del sistema y use el siguiente comando para iniciar sesión en la máquina virtual. Escriba su propia información para nombre de usuario y nombre DNS en función de la sección anterior.

    ssh <adminUsername>@<DNS_name>
    
  2. Cuando se le pida que valide la autenticidad del host, escriba y seleccione Entrar.

  3. Cuando se le solicite, proporcione la contraseña.

  4. Ubuntu muestra un mensaje inicial y, a continuación, debería ver un aviso como <username>@<machinename>:~$.

Descarga de certificados de Key Vault

Anteriormente en este artículo, cargamos certificados en Key Vault para ponerlos a disposición de nuestro dispositivo IoT Edge y nuestro dispositivo descendente. El dispositivo aguas abajo usa el dispositivo IoT Edge como puerta de enlace para comunicarse con el IoT Hub.

Abordaremos el dispositivo aguas abajo más adelante en el tutorial. En esta sección, descargue los certificados en el dispositivo IoT Edge.

  1. Desde la sesión SSH de la máquina virtual Linux, inicie sesión en Azure con la CLI de Azure.

    az login
    
  2. Se le pedirá que abra un explorador en una página de inicio de sesión de dispositivo de Microsoft y proporcione un código único. Puede realizar estos pasos en su máquina local. Cierre la ventana del explorador cuando haya terminado de autenticarse.

  3. Cuando se autentique correctamente, la máquina virtual Linux iniciará sesión y enumerará las suscripciones de Azure.

  4. Establezca la suscripción de Azure que desea usar para los comandos de la CLI de Azure.

    az account set --subscription <subscriptionId>
    
  5. Cree un directorio en la máquina virtual para los certificados.

    sudo mkdir /edgeMlCertificates
    
  6. Descargue los certificados almacenados en el almacén de claves: new-edge-device-full-chain.cert.pem, new-edge-device.key.pem y azure-iot-test-only.root.ca.cert.pem.

    key_vault_name="<key vault name>"
    sudo az keyvault secret download --vault-name $key_vault_name --name new-edge-device-full-chain-cert-pem -f /edgeMlCertificates/new-edge-device-full-chain.cert.pem
    sudo az keyvault secret download --vault-name $key_vault_name --name new-edge-device-key-pem -f /edgeMlCertificates/new-edge-device.key.pem
    sudo az keyvault secret download --vault-name $key_vault_name --name azure-iot-test-only-root-ca-cert-pem -f /edgeMlCertificates/azure-iot-test-only.root.ca.cert.pem
    

Actualización de la configuración del dispositivo IoT Edge

El entorno de ejecución de IoT Edge usa el archivo /etc/iotedge/config.yaml para conservar su configuración. Necesitamos actualizar dos fragmentos de información en este archivo:

  • Certificados: los certificados que se usarán para las conexiones realizadas con dispositivos de bajada
  • Nombre de host: El nombre de dominio completo (FQDN) del dispositivo IoT Edge de la máquina virtual

Actualice los certificados y el nombre de host editando directamente el archivo config.yaml.

  1. Abra el archivo config.yaml.

    sudo nano /etc/iotedge/config.yaml
    
  2. Actualice la sección de certificados del archivo config.yaml quitando el elemento inicial # y estableciendo la ruta de acceso para que el archivo tenga el siguiente aspecto:

    certificates:
      device_ca_cert: "/edgeMlCertificates/new-edge-device-full-chain.cert.pem"
      device_ca_pk: "/edgeMlCertificates/new-edge-device.key.pem"
      trusted_ca_certs: "/edgeMlCertificates/azure-iot-test-only.root.ca.cert.pem"
    

    Asegúrese de que la línea certificates: no tenga ningún espacio en blanco anterior y que cada certificado anidado tenga una sangría de dos espacios.

    Al hacer clic con el botón derecho en nano, se pegará el contenido del portapapeles en la posición actual del cursor. Para reemplazar la cadena, use las flechas de teclado para ir a la cadena que desea reemplazar, eliminar la cadena y, a continuación, hacer clic con el botón derecho para pegar desde el búfer.

  3. En Azure Portal, vaya a la máquina virtual. Copie el nombre DNS (FQDN del equipo) en la sección Información general .

  4. Pegue el FQDN en la sección nombre de host del archivo config.yml. Asegúrese de que el nombre está en minúsculas.

    hostname: '<machinename>.<region>.cloudapp.azure.com'
    
  5. Guarde y cierre el archivo seleccionando Ctrl+X, Y y Entrar.

  6. Reinicie el demonio de IoT Edge.

    sudo systemctl restart iotedge
    
  7. Compruebe el estado del demonio de IoT Edge. Después del comando, escriba :q para salir.

    systemctl status iotedge
    

Solución de problemas

Si ve errores (texto en color con el prefijo "[ERROR]") en el estado, examine los registros del proceso para obtener información detallada sobre los errores.

journalctl -u iotedge --no-pager --no-full

Para obtener más información sobre cómo solucionar errores, consulte la página de solución de problemas .

Limpieza de recursos

Este tutorial forma parte de un conjunto en el que cada artículo se basa en el trabajo realizado en los anteriores. Espere para proceder con la limpieza de los recursos hasta que haya completado el tutorial final.

Pasos siguientes

Acabamos de configurar una máquina virtual de Azure como puerta de enlace transparente de IoT Edge. Comenzamos mediante la generación de certificados de prueba que cargamos en Key Vault. A continuación, hemos usado un script y una plantilla de Resource Manager para implementar la máquina virtual con la imagen en tiempo de ejecución de Ubuntu Server 16.04 LTS + Azure IoT Edge desde Azure Marketplace. Con la máquina virtual en funcionamiento, nos conectamos a través de SSH. A continuación, iniciamos sesión en Azure y descargamos certificados de Key Vault. Hemos realizado varias actualizaciones en la configuración del entorno de ejecución de IoT Edge mediante la actualización del archivo config.yaml.

Continúe con el siguiente artículo para compilar módulos de IoT Edge.