Share via


Créer et provisionner IoT Edge pour Linux sur des appareils Windows à grande échelle avec des certificats X.509

S’applique à :Coche IoT Edge 1.4 IoT Edge 1.4

Important

IoT Edge 1.5 LTS et IoT Edge 1.4 sont des versions prises en charge. IoT Edge 1.4 LTS sera en fin de vie le 12 novembre 2024. Si vous utilisez une version antérieure, consultez l’article Mettre à jour IoT Edge.

Cet article fournit des instructions complètes pour le provisionnement automatique d’un ou de plusieurs appareils IoT Edge pour Linux sur Windows à l’aide de certificats X.509. Les appareils Azure IoT Edge peuvent être approvisionnés automatiquement à l’aide du Service IoT Hub Device Provisioning (DPS). Si vous ne connaissez pas le processus de provisionnement automatique, consultez la vue d’ensemble du provisionnement avant de poursuivre.

Voici les tâches à effectuer :

  1. Génération de certificats et de clés
  2. Créez une inscription individuelle pour un seul appareil ou une inscription de groupe pour un ensemble d’appareils.
  3. Déploiement d’une machine virtuelle Linux avec le runtime IoT Edge installé, et connexion de cette machine à IoT Hub

Utiliser des certificats X.509 comme mécanisme d’attestation est un excellent moyen de mettre à l’échelle la production et de simplifier le provisionnement des appareils. Les certificats X.509 sont généralement organisés en une chaîne d’approbation de confiance. À partir d’un certificat racine auto-signé ou approuvé, chaque certificat de la chaîne signe le certificat inférieur suivant. Ce modèle crée une chaîne déléguée de confiance depuis le certificat racine jusqu’au certificat en aval final installé sur un appareil, en passant par chaque certificat intermédiaire.

Prérequis

Ressources cloud

  • Hub IoT actif
  • Instance du service de provisionnement des appareils IoT Hub dans Azure, liée à votre hub IoT
    • Si vous ne disposez pas d’une instance de service Device Provisioning, vous pouvez suivre les instructions fournies dans les sections Créer un service IoT Hub Device Provisioning et Lier le hub IoT et votre service Device Provisioning du guide de démarrage rapide du service IoT Hub Device Provisioning.
    • Après avoir démarré le service Device Provisioning, copiez la valeur de Étendue de l’ID à partir de la page de présentation. Vous utilisez cette valeur lorsque vous configurez le runtime IoT Edge.

Exigences relatives aux appareils

Un appareil Windows avec la configuration minimale requise suivante :

  • Configuration requise

    • Windows 101/11 (Pro, Enterprise, IoT Enterprise)
    • Windows Server 20191/2022
      1 Windows 1 et Windows Server 10 version 2019 build 17763 ou ultérieure, avec toutes les mises à jour cumulatives actuelles installées.
  • Configuration matérielle requise

    • Mémoire disponible minimale : 1 Go
    • Espace disque disponible minimal : 10 Go
  • Prise en charge de la virtualisation

  • Prise en charge du réseau

    • Windows Server n’est pas fourni avec un commutateur par défaut. Pour pouvoir déployer EFLOW sur un appareil Windows Server, vous devez créer un commutateur virtuel. Pour plus d’informations, consultez Création d’un commutateur virtuel pour Linux sur Windows.
    • Les versions Windows Desktop sont fournies avec un commutateur par défaut utilisable pour l’installation d’EFLOW. Si nécessaire, vous pouvez créer votre propre commutateur virtuel personnalisé.

Conseil

Si vous souhaitez utiliser des modules Linux avec accélération GPU dans votre déploiement Azure IoT Edge pour Linux sur Windows, il existe plusieurs options de configuration à prendre en compte.

Vous devrez installer les pilotes adaptés à votre architecture GPU. Par ailleurs, vous aurez peut-être besoin d’un accès à une build du Programme Windows Insider. Pour déterminer vos besoins en matière de configuration et satisfaire à ces prérequis, consultez Accélération GPU pour Azure IoT Edge pour Linux sur Windows.

Veillez à prendre le temps de répondre aux conditions préalables à l’accélération du GPU. Vous devrez redémarrer le processus d’installation si vous décidez d’accélérer le GPU pendant l’installation.

Outils de développeur

Préparez votre appareil cible à l’installation d’Azure IoT Edge pour Linux sur Windows et au déploiement de la machine virtuelle Linux :

  1. Définissez la stratégie d’exécution sur l’appareil cible sur AllSigned. Vous pouvez vérifier la stratégie d’exécution actuelle dans une invite PowerShell avec élévation de privilèges à l’aide de la commande suivante :

    Get-ExecutionPolicy -List
    

    Si la stratégie d’exécution de local machine n’est pas AllSigned, vous pouvez la définir à l’aide de :

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

Pour en savoir plus sur le module PowerShell d’Azure IoT Edge pour Linux sur Windows, consultez la documentation de référence sur les fonctions PowerShell.

Générer des certificats d’identité d’appareil

Le certificat d’identité d’appareil est un certificat en aval qui se connecte par le biais d’une chaîne de certificats de confiance au certificat d’autorité de certification X.509 supérieur. Le nom commun (CN) du certificat d’identité d’appareil doit être défini sur l’ID d’appareil que vous souhaitez que l’appareil ait dans votre hub IoT.

Les certificats d’identité d’appareil sont utilisés uniquement pour provisionner l’appareil IoT Edge et l’authentifier auprès d’Azure IoT Hub. Ils ne signent pas de certificats, contrairement aux certificats d’autorité de certification que l’appareil IoT Edge présente aux modules ou aux appareils en aval à des fins de vérification. Pour plus d’informations, consultez les détails sur l’utilisation des certificats par Azure IoT Edge.

Après avoir créé le certificat d’identité d’appareil, vous devez avoir deux fichiers : un fichier .cer ou .pem, qui contient la partie publique du certificat, et un fichier .cer ou .pem, qui comporte la clé privée du certificat. Si vous envisagez d’utiliser l’inscription de groupe dans le service Device Provisioning, vous avez également besoin de la partie publique d’un certificat d’autorité de certification racine ou intermédiaire dans la même chaîne de certificats de confiance.

Les fichiers suivants sont nécessaires pour configurer le provisionnement automatique avec X.509 :

  • Le certificat d’identité d’appareil et son certificat de clé privée. Le certificat d’identité d’appareil est chargé dans DPS si vous créez une inscription individuelle. La clé privée est transmise au runtime IoT Edge.
  • Un certificat de chaîne complète, qui doit comporter au moins l’identité d’appareil et les certificats intermédiaires qu’elle contient. Le certificat de chaîne complète est transmis au runtime IoT Edge.
  • Un certificat d’autorité de certification racine ou intermédiaire issu de la chaîne d’approbation des certificats. Ce certificat est chargé dans DPS si vous créez une inscription de groupe.

Remarque

Il existe actuellement dans libiothsm une limitation empêchant l’utilisation de certificats qui expirent le 1er janvier 2038 ou après cette date.

Utiliser des certificats de test (facultatif)

Si vous n’avez pas d’autorité de certification disponible pour créer des certificats d’identité et que vous souhaitez tester ce scénario, le dépôt Git Azure IoT Edge contient des scripts que vous pouvez utiliser pour générer des certificats de test. Ces certificats, conçus uniquement pour les tests de développement, ne doivent pas être utilisés en production.

Pour créer des certificats de test, suivez les étapes décrites dans Créer des certificats de démonstration pour tester les fonctionnalités de l’appareil IoT Edge. Effectuez les deux sections nécessaires pour configurer les scripts de génération de certificat et créer un certificat d’autorité de certification racine. Ensuite, suivez les étapes permettant de créer un certificat d’identité d’appareil. Quand vous avez terminé, vous devez disposer de la chaîne de certificats et de la paire de clés suivantes :

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

Vous avez besoin de ces deux certificats sur l’appareil IoT Edge. Si vous envisagez d’utiliser l’inscription individuelle dans le service Device Provisioning, vous devez charger le fichier .cert.pem. Si vous envisagez d’utiliser l’inscription de groupe dans le service Device Provisioning, la même chaîne de certificats de confiance doit également comporter un certificat d’autorité de certification racine ou intermédiaire à charger. Si vous recourez à des certificats de démonstration, utilisez le certificat <WRKDIR>\certs\azure-iot-test-only.root.ca.cert.pem pour l’inscription de groupe.

Créer une inscription au service Device Provisioning

Utilisez vos certificats et clés générés afin de créer une inscription dans le service Device Provisioning pour un ou plusieurs appareils IoT Edge.

Si vous envisagez de provisionner un seul appareil IoT Edge, créez une inscription individuelle. Si vous avez besoin de provisionner plusieurs appareils, suivez les étapes de création d’une inscription de groupe DPS.

Lorsque vous créez une inscription auprès du service Device Provisioning, vous avez la possibilité de déclarer un État initial du jumeau d’appareil. Dans le jumeau d’appareil, vous pouvez définir des balises pour regrouper les appareils en fonction des métriques dont vous avez besoin dans votre solution, comme la région, l’environnement, l’emplacement ou le type d’appareil. Ces balises sont utilisées pour créer des déploiements automatiques.

Pour plus d’informations sur les inscriptions dans le service Device Provisioning, consultez Guide pratique pour gérer les inscriptions d’appareils.

Créer une inscription individuelle dans le service Device Provisioning

Les inscriptions individuelles prennent la partie publique du certificat d’identité d’un appareil et la font correspondre avec le certificat sur l’appareil.

Conseil

Bien que les étapes décrites dans cet article concernent le portail Azure, vous pouvez également créer des inscriptions individuelles à l’aide d’Azure CLI. Pour plus d’informations, consultez la section relative à az iot dps enrollment. Dans la commande CLI, utilisez l’indicateur edge-enabled pour spécifier que l’inscription concerne un appareil IoT Edge.

  1. Dans le Portail Azure, accédez à votre instance du service IoT Hub Device Provisioning.

  2. Sous Paramètres, sélectionnez Gérer les inscriptions.

  3. Sélectionnez Ajouter une inscription individuelle et suivez ces étapes pour configurer l’inscription :

    • Mécanisme : sélectionnez X.509.

    • Fichier de certificat principal .pem ou .cer : chargez le fichier public du certificat d’identité de l’appareil. Si vous avez utilisé les scripts pour générer un certificat de test, choisissez le fichier suivant :

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

    • ID d’appareil loT Hub : fournissez un ID pour votre appareil si vous le souhaitez. Vous pouvez utiliser l’ID d’appareil pour cibler un appareil individuel lors du déploiement de module. Si vous ne fournissez pas d’ID d’appareil, le nom commun (CN) dans le certificat X.509 est utilisé.

    • Appareil IoT Edge : sélectionnez True pour déclarer que l’inscription concerne un appareil IoT Edge.

    • Sélectionnez les hubs IoT auxquels cet appareil peut être attribué : choisissez le hub IoT lié auquel vous voulez connecter votre appareil. Vous pouvez choisir plusieurs hubs : l’appareil sera affecté à l’un d’entre eux en fonction de la stratégie d’allocation sélectionnée.

    • État du jumeau d’appareil initial : ajoutez une valeur d’étiquette au jumeau d’appareil si vous le souhaitez. Vous pouvez utiliser des étiquettes pour cibler des groupes d’appareils lors du déploiement automatique. Par exemple :

      {
          "tags": {
             "environment": "test"
          },
          "properties": {
             "desired": {}
          }
      }
      
  4. Sélectionnez Enregistrer.

Sous Gérer les inscriptions, vous pouvez voir l’ID d’inscription pour l’inscription que vous venez de créer. Notez-le, car il peut être utilisé quand vous provisionnez votre appareil.

Maintenant qu’une inscription existe pour cet appareil, le runtime IoT Edge peut provisionner automatiquement l’appareil lors de l’installation.

Installer IoT Edge

Déployez Azure IoT Edge pour Linux sur Windows sur votre appareil cible.

Remarque

Le processus PowerShell suivant explique comment déployer IoT Edge pour Linux sur Windows sur l’appareil local. Pour effectuer un déploiement sur un appareil cible distant avec PowerShell, vous pouvez utiliser PowerShell distant afin d’établir une connexion à un appareil distant et d’exécuter ces commandes à distance sur cet appareil.

  1. Dans une session PowerShell avec élévation de privilèges, exécutez l’une des commandes suivantes en fonction de l’architecture de votre appareil cible pour télécharger IoT Edge pour Linux sur 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. Installez IoT Edge pour Linux sur Windows sur votre appareil.

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

    Vous pouvez spécifier des répertoires personnalisés d’installation d’IoT Edge pour Linux sur Windows et VHDX en ajoutant les paramètres INSTALLDIR="<FULLY_QUALIFIED_PATH>" et VHDXDIR="<FULLY_QUALIFIED_PATH>" à la commande d’installation. Par exemple, si vous souhaitez utiliser le dossier D:\EFLOW pour l’installation et D:\EFLOW-VHDX pour le VHDX, vous pouvez utiliser l’applet de commande PowerShell suivante.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
    
  3. Définissez la stratégie d’exécution sur l’appareil cible sur AllSigned si ce n’est pas déjà fait. Consultez la configuration requise des commandes PowerShell pour vérifier la stratégie d’exécution actuelle et définir la stratégie d’exécution sur AllSigned.

  4. Créer le déploiement d’IoT Edge pour Linux sur Windows. Le déploiement crée votre machine virtuelle Linux et installe le runtime IoT Edge pour vous.

    Deploy-Eflow
    

    Conseil

    Par défaut, la commande Deploy-Eflow crée votre machine virtuelle Linux avec 1 Go de RAM, 1 noyau de processeur virtuel et 16 Go d’espace disque. Toutefois, les ressources dont votre machine virtuelle a besoin dépendent fortement des charges de travail que vous déployez. Si votre machine virtuelle ne dispose pas de suffisamment de mémoire pour prendre en charge vos charges de travail, elle ne démarrera pas.

    Vous pouvez personnaliser les ressources disponibles de la machine virtuelle à l’aide des paramètres facultatifs de la commande Deploy-Eflow. Ceci est nécessaire pour déployer EFLOW sur un appareil avec la configuration matérielle minimale requise.

    Par exemple, la commande ci-dessous crée une machine virtuelle avec 1 cœur de processeur virtuel, 1 Go de RAM (quantité représentée en Mo) et 2 Go d’espace disque :

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

    Pour plus d’informations sur tous les paramètres facultatifs disponibles, consultez Fonctions PowerShell pour IoT Edge pour Linux sur Windows.

    Avertissement

    Par défaut, la machine virtuelle Linux EFLOW n’a pas de configuration DNS. Les déploiements utilisant DHCP essaient d’obtenir la configuration DNS propagée par le serveur DHCP. Vérifiez votre configuration DNS pour garantir la connectivité Internet. Pour plus d’informations, consultez AzEFLOW-DNS.

    Vous pouvez affecter un GPU à votre déploiement pour permettre l’utilisation de modules Linux avec accélération GPU. Pour accéder à ces fonctionnalités, vous devez installer les composants requis détaillés dans Accélération GPU pour Azure IoT Edge pour Linux sur Windows.

    Pour utiliser un relais GPU, ajoutez les paramètres gpuName, gpuPassthroughType et gpuCount à votre commande Deploy-Eflow. Pour plus d’informations sur tous les paramètres facultatifs disponibles, consultez Fonctions PowerShell pour IoT Edge pour Linux sur Windows.

    Avertissement

    L’activation du relais d’appareils matériels peut augmenter les risques liés à la sécurité. Microsoft vous recommande de recourir à un pilote d’atténuation des appareils du fournisseur de votre GPU, le cas échéant. Pour plus d’informations, consultez Déploiement d’appareils graphiques avec la technologie DDA (Discrete Device Assignment).

  5. Entrez « Y » pour accepter les termes du contrat de licence.

  6. Entrez « O » ou « R » pour activer ou désactiver les données de diagnostic facultatives à votre convenance.

  7. Une fois le déploiement terminé, la fenêtre PowerShell signale Déploiement réussi.

    Un déploiement réussi indique « Déploiement réussi » à la fin des messages.

    Une fois le déploiement réussi, vous êtes prêt à provisionner votre appareil.

Provisionnement de l’appareil avec son identité cloud

Une fois le runtime installé sur votre appareil, configurez ce dernier avec les informations qu’il utilise pour se connecter au service DPS et à IoT Hub.

Préparez les informations suivantes :

  • La valeur Étendue de l’ID du service Device Provisioning. Vous pouvez récupérer cette valeur à partir de la page de présentation de votre instance du service Device Provisioning dans le portail Azure.
  • Le fichier de chaîne de certificats d’identité d’appareil sur l’appareil
  • Le fichier de clé d’identité d’appareil sur l’appareil

Exécutez la commande suivante dans une session PowerShell avec élévation de privilèges en remplaçant les valeurs d’espace réservé par vos propres valeurs :

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

Vérifier la réussite de l’installation

Vérifiez que IoT Edge pour Linux sur Windows a été correctement installé et configuré sur votre appareil IoT Edge.

Vous pouvez vérifier que l’inscription individuelle que vous avez créée dans le service DPS a bien été utilisée. Accédez à l’instance DPS sur le Portail Azure. Ouvrez les détails de l’inscription pour l’inscription individuelle que vous avez créée. Notez que l’état de l’inscription est Affecté et que l’ID de l’appareil figure dans la liste.

  1. Connectez-vous à votre IoT Edge pour Linux sur machine virtuelle Windows en utilisant la commande suivante dans votre session PowerShell :

    Connect-EflowVm
    

    Notes

    Le seul compte autorisé à accéder via SSH à la machine virtuelle est celui de l’utilisateur qui l’a créée.

  2. Une fois connecté, vous pouvez vérifier la liste des modules IoT Edge en cours d’exécution à l’aide de la commande Linux suivante :

    sudo iotedge list
    
  3. Si vous devez dépanner le service IoT Edge, utilisez les commandes Linux suivantes.

    1. Si vous avez besoin de résoudre les problèmes du service, récupérez les journaux d’activité de ce dernier.

      sudo iotedge system logs
      
    2. Utilisez l’outil check pour vérifier l’état de la configuration et de la connexion de l’appareil.

      sudo iotedge check
      

    Remarque

    Sur un appareil nouvellement approvisionné, vous pourriez voir une erreur liée à IoT Edge Hub :

    Vérification de disponibilité de la production × : le répertoire de stockage Edge Hub est conservé sur le système de fichiers hôte - Erreur

    Impossible de vérifier l’état actuel du conteneur edgeHub

    Cette erreur est attendue sur un appareil nouvellement provisionné, car le module IoT Edge Hub n’est pas en cours d’exécution. Pour résoudre l’erreur, dans IoT Hub, définissez les modules de l’appareil et créez un déploiement. La création d’un déploiement pour l’appareil démarre les modules sur l’appareil, y compris le module IoT Edge Hub.

Lorsque vous créez un appareil IoT Edge, le code d’état 417 -- The device's deployment configuration is not set s’affiche dans le portail Azure. Cet état est normal et signifie que l’appareil est prêt à recevoir un déploiement de module.

Désinstaller IoT Edge pour Linux sur Windows

Si vous souhaitez supprimer l’installation d’Azure IoT Edge pour Linux sur Windows de votre appareil, utilisez les commandes suivantes.

  1. Ouvrez Paramètres sur Windows.
  2. Sélectionnez Ajout/Suppression de programmes.
  3. Sélectionnez l’application Azure IoT Edge.
  4. Sélectionnez Désinstaller.

Étapes suivantes

Le processus d’inscription DPS vous permet de définir l’ID d’appareil et les balises du jumeau d’appareil tandis que vous provisionnez le nouvel appareil. Vous pouvez utiliser ces valeurs pour cibler des appareils individuels ou des groupes d’appareils avec la gestion d’appareils automatique. En savoir plus sur Déployer et surveiller des modules IoT Edge à grande échelle à l’aide du portail Azure ou d’Azure CLI.

Vous pouvez également :