Créer et approvisionner des IoT Edge pour Linux sur des appareils Windows à grande échelle à l’aide de clés symétriques

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

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 clés symétriques. Les appareils Azure IoT Edge peuvent être provisionnés automatiquement à l’aide du service Azure IoT Hub Device Provisioning (DPS). Si vous ne connaissez pas le processus d’approvisionnement automatique, consultez la présentation de l’approvisionnement avant de poursuivre.

Voici les tâches à effectuer :

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

L’attestation de clés symétriques est une approche simple pour authentifier un appareil avec une instance du service de provisionnement des appareils. Cette méthode d’attestation représente une expérience « Hello world » pour les développeurs qui découvrent le provisionnement d’appareils ou n’ont pas d’exigences de sécurité strictes. L’attestation d’appareil avec un Module de plateforme sécurisée (TPM) ou un certificat X.509 est plus sécurisée, et doit être utilisée lorsque les exigences de sécurité sont plus strictes.

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 lancé l’exécution du 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.

Créer une inscription au service Device Provisioning

Créez une inscription pour provisionner un ou plusieurs appareils via le service Device Provisioning.

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 dans le 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

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 :

    1. Pour Mécanisme, sélectionnez Clé symétrique.

    2. Indiquez un ID d’inscription unique pour votre appareil.

    3. Fournissez si vous le souhaitez un ID d’appareil loT Hub pour votre appareil. Vous pouvez utiliser l’ID d’appareil pour cibler un appareil individuel lors du déploiement de module. Si vous ne fournissez pas un ID d’appareil, l’ID d’inscription est utilisé.

    4. Sélectionnez Vrai pour déclarer que cette inscription est un appareil IoT Edge.

    5. Si vous le souhaitez, ajoutez une valeur de balise à l’état initial du jumeau d’appareil. Vous pouvez utiliser des balises pour cibler des groupes d’appareils lors du déploiement de module. Par exemple :

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

  4. Copiez la clé primaire de l’inscription spécifique à utiliser lors de l’installation du runtime IoT Edge.

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.

Notes

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 chacune des commandes suivantes 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 :

  • Valeur Étendue de l’ID du service Device Provisioning
  • L’ID d’inscription de l’appareil que vous avez créé
  • Entrez la clé primaire d’une inscription spécifique ou une clé dérivée pour les appareils utilisant une inscription de groupe.

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 DpsSymmetricKey -scopeId PASTE_YOUR_ID_SCOPE_HERE -registrationId PASTE_YOUR_REGISTRATION_ID_HERE -symmKey PASTE_YOUR_PRIMARY_KEY_OR_DERIVED_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 d’approvisionnement des appareils a été utilisée. Accédez à l’instance du service d’approvisionnement des appareils dans 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. Récupérez les journaux de service.

      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
      

    Notes

    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 auprès du service de provisionnement des appareils vous permet de définir l’ID d’appareil et les balises du jumeau d’appareil en même temps 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 :