Créer et provisionner un appareil IoT Edge pour Linux sur Windows à grande échelle à l’aide d’un TPM

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

Important

IoT Edge 1.4 est la version prise en charge. Si vous utilisez une version antérieure, consultez l’article Mettre à jour IoT Edge.

Cet article fournit des instructions concernant le provisionnement automatique d’un appareil IoT Edge pour Linux sur Windows avec un module de plateforme sécurisée (TPM). Les appareils Azure IoT Edge peuvent être provisionnés automatiquement à l’aide du service Azure IoT Hub Device Provisioning. Si vous ne connaissez pas le processus de provisionnement automatique, consultez la présentation du provisionnement avant de poursuivre.

Cet article décrit deux méthodologies. Sélectionnez votre préférence en fonction de l’architecture de votre solution :

  • Provisionnement automatique d’un appareil Linux sur Windows avec du matériel TPM physique.
  • Provisionnement automatique d’un appareil Linux sur Windows à l’aide d’un TPM simulé. Nous vous recommandons d’utiliser cette méthode uniquement dans un scénario de test. Un module de plateforme sécurisée simulé n’offre pas la même sécurité qu’un module de plateforme sécurisée physique.

Voici les tâches à effectuer :

  • Installez IoT Edge pour Linux sur Windows.
  • Récupérez les informations du module de plateforme sécurisée à partir de votre appareil.
  • Création d’une inscription individuelle pour l’appareil.
  • Approvisionnez votre appareil avec ses informations de module de plateforme sécurisée.

Prérequis

Ressources cloud

  • Hub IoT actif
  • Instance du service d’approvisionnement d’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éveloppement

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.

Remarque

TPM 2.0 est requis lorsque vous utilisez l’attestation TPM avec le service de provisionnement des appareils.

Vous pouvez uniquement créer des inscriptions de service de provisionnement des appareils, et non de groupe, lorsque vous utilisez un module de plateforme sécurisée.

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.

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

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

Il existe quelques étapes pour préparer votre appareil pour le provisionnement avec un TPM. Laissez votre déploiement ouvert pendant que vous préparez votre appareil. Vous reviendrez à votre déploiement plus loin dans cet article.

Activer le relais TPM

La machine virtuelle IoT Edge pour Linux sur Windows dispose d’une fonctionnalité TPM qui peut être activée ou désactivée. Par défaut, elle est désactivée. Lorsque cette fonctionnalité est activée, la machine virtuelle peut accéder au module de plateforme sécurisée de l’ordinateur hôte.

  1. Ouvrez une session PowerShell avec élévation de privilèges.

  2. Si ce n’est encore fait, définissez la stratégie d’exécution de votre appareil sur AllSigned afin de pouvoir exécuter les fonctions PowerShell IoT Edge pour Linux sur Windows.

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    
  3. Activez la fonctionnalité TPM.

    Set-EflowVmFeature -feature 'DpsTpm' -enable
    

Récupérer les informations du module de plateforme sécurisée à partir de votre appareil

Pour approvisionner votre appareil, vous avez besoin d’une paire de clés de type EK (Endorsement Key) pour votre puce TPM et d’un ID d’inscription pour votre appareil. Vous fournissez ces informations à votre instance du service d’approvisionnement des appareils pour lui permettre de reconnaître votre appareil quand il tente de se connecter.

La paire de clés de type EK (Endorsement Key) est unique pour chaque puce TPM. Vous pouvez l’obtenir auprès du fabricant de puces TPM associé. Vous pouvez dériver un ID d’inscription unique pour votre appareil TPM, en créant par exemple un code de hachage SHA-256 pour la paire de clés de type EK.

IoT Edge pour Linux sur Windows fournit un script PowerShell pour vous aider à récupérer ces informations à partir de votre TPM. Pour utiliser le script, procédez comme suit sur votre appareil :

  1. Ouvrez une session PowerShell avec élévation de privilèges.

  2. Exécutez la commande .

    Get-EflowVmTpmProvisioningInfo | Format-List
    

Créer une inscription dans le service de provisionnement des appareils

Utilisez les informations de provisionnement de votre TPM pour créer une inscription individuelle dans le service Device Provisioning.

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 différentes métriques utilisées 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.

Conseil

Les étapes décrites dans cet article concernent le portail Azure, mais vous pouvez également créer des inscriptions individuelles en utilisant 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, puis suivez cette procédure pour configurer l’inscription :

    1. Pour Mécanisme, sélectionnez TPM.

    2. Spécifiez la paire de clés de type EK (Endorsement Key) et l’ID d’inscription que vous avez copiés sur votre machine virtuelle ou votre appareil physique.

    3. Fournissez un ID pour votre appareil si vous le souhaitez. Si vous ne fournissez pas un ID d’appareil, l’ID d’inscription est utilisé.

    4. Sélectionnez True pour déclarer que votre machine virtuelle ou votre appareil physique est un appareil IoT Edge.

    5. Choisissez le hub IoT lié auquel vous voulez connecter votre appareil, ou sélectionnez Lier à un nouveau hub IoT. Vous pouvez choisir plusieurs hubs : l’appareil sera affecté à l’un d’entre eux en fonction de la stratégie d’attribution sélectionnée.

    6. Ajoutez une valeur d’étiquette à l’état initial du jumeau d’appareil si vous le souhaitez. Vous pouvez utiliser des balises pour cibler des groupes d’appareils lors du déploiement de module. Pour plus d’informations, consultez Déploiement de modules IoT Edge à grande échelle.

    7. Cliquez sur Enregistrer.

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

Provisionnement de l’appareil avec son identité cloud

  1. Ouvrez une session PowerShell avec élévation de privilèges sur l’appareil Windows.

  2. Provisionnez votre appareil à l’aide de l’ID d’étendue que vous avez collecté à partir de votre instance du service de provisionnement des appareils.

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

    Si vous avez inscrit l’appareil à l’aide d’un ID d’inscription personnalisé, vous devez également spécifier cet ID d’inscription lors de l’approvisionnement :

    Provision-EflowVM -provisioningType "DpsTpm" -scopeId "SCOPE_ID_HERE" -registrationId "REGISTRATION_ID_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.

Si le runtime a démarré correctement, vous pouvez accéder à votre IoT Hub et commencer à déployer des modules IoT Edge sur votre appareil.

Vous pouvez vérifier que l’inscription individuelle que vous avez créée dans le service de provisionnement des appareils a été utilisée. Accédez à l’instance du service de provisionnement 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.

Utilisez les commandes suivantes sur votre appareil pour vérifier que IoT Edge a été installé et démarré correctement.

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

    Connect-EflowVm
    

    Remarque

    Le seul compte autorisé à bénéficier d’un accès via SSH à la machine virtuelle est l’utilisateur qui l’a créée.

  2. Une fois que vous êtes 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.

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.

Découvrez comment déployer et superviser des modules IoT Edge à grande échelle à l’aide du portail Azure ou d’Azure CLI.