Partager via


Tutoriel : Configurer un appareil Azure IoT Edge

S’applique à : icône oui IoT Edge 1.1

Important

IoT Edge la date de fin du support 1.1 était le 13 décembre 2022. Consultez la page Politique de support Microsoft pour plus d’informations sur la prise en charge de ce produit, de ce service, de cette technologie ou de cette API. Pour plus d’informations sur la mise à jour vers la dernière version d’IoT Edge, consultez Mettre à jour IoT Edge.

Dans cet article, nous configurons une machine virtuelle Azure exécutant Linux comme appareil Azure IoT Edge servant de passerelle transparente. La configuration d’une passerelle transparente permet aux appareils de se connecter à Azure IoT Hub à travers la passerelle sans savoir que la passerelle existe. De la même façon, l’utilisateur qui interagit avec les appareils dans IoT Hub n’a pas conscience de l’appareil de passerelle intermédiaire. À la fin, nous ajouterons des données d’analytique Edge à notre système en ajoutant des modules IoT Edge à la passerelle transparente.

Notes

Les concepts abordés dans ce tutoriel s’appliquent à toutes les versions d’IoT Edge, mais l’exemple d’appareil que vous créez pour tester le scénario exécute IoT Edge version 1.1.

Les étapes décrites dans cet article sont généralement effectuées par un développeur de cloud.

Dans cette section du tutoriel, vous allez apprendre à :

  • Créer des certificats pour permettre à votre appareil de passerelle de se connecter de façon sécurisée à vos appareils en aval.
  • Créer un appareil IoT Edge.
  • Créer une machine virtuelle Azure pour simuler votre appareil IoT Edge.

Prérequis

Cet article fait partie d’une série décrivant l’utilisation d’Azure Machine Learning sur IoT Edge. Chaque article de la série s’appuie sur le travail réalisé dans le cadre de l’article précédent. Si vous êtes tombé directement sur cet article, consultez le premier article de la série.

Créer des certificats

Pour qu’un appareil fonctionne comme une passerelle, il doit se connecter de manière sécurisée aux appareils en aval. IoT Edge vous permet d’utiliser une infrastructure à clé publique (PKI) pour configurer des connexions sécurisées entre les appareils. Dans ce cas, nous autorisons un appareil IoT en aval à se connecter à un appareil IoT Edge faisant office de passerelle transparente. Pour assurer un niveau raisonnable de sécurité, l’appareil en aval doit confirmer l’identité de l’appareil IoT Edge. Pour plus d’informations sur la façon dont les appareils IoT Edge utilisent des certificats, consultez Détails d’utilisation des certificats Azure IoT Edge.

Dans cette section, nous créons les certificats auto-signés à l’aide d’une image Docker que nous devons générer et exécuter. Nous avons choisi d’utiliser une image Docker pour effectuer cette étape, car elle réduit le nombre d’étapes nécessaires pour créer les certificats sur la machine de développement Windows. Pour comprendre ce que nous avons automatisé grâce à l’image Docker, consultez Créer des certificats de démonstration pour tester des fonctionnalités d’appareils IoT Edge.

  1. Connectez-vous à votre machine virtuelle de développement.

  2. Créez un dossier avec le chemin et le nom c:\edgeCertificates.

  3. S’il n’est pas déjà en cours d’exécution, démarrez Docker pour Windows à partir du menu Démarrer de Windows.

  4. Ouvrez Visual Studio Code.

  5. Sélectionnez Fichier>Ouvrir le dossier et choisissez C:\source\IoTEdgeAndMlSample\CreateCertificates.

  6. Dans le volet Explorer, cliquez avec le bouton droit sur dockerfile et sélectionnez Générer l’image.

  7. Dans la boîte de dialogue, acceptez la valeur par défaut du nom et de l’étiquette de l’image : createcertificates: latest.

    Capture d’écran montrant la création de certificats dans Visual Studio Code.

  8. Attendez la fin de la génération.

    Notes

    Vous pouvez voir un avertissement indiquant qu’une clé publique est manquante. Vous pouvez ignorer cet avertissement. De même, vous verrez un avertissement de sécurité qui vous recommande de vérifier ou de réinitialiser les autorisations sur votre image. Vous pouvez l’ignorer pour cette image.

  9. Dans la fenêtre de terminal Visual Studio Code, exécutez le conteneur createcertificates.

    docker run --name createcertificates --rm -v c:\edgeCertificates:/edgeCertificates createcertificates /edgeCertificates
    
  10. Docker vous invite à accéder au lecteur c:. Sélectionnez Partager.

  11. À l’invite, indiquez vos informations d’identification.

  12. Une fois que le conteneur a fini son exécution, recherchez les fichiers suivants dans 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

Charger des certificats dans Azure Key Vault

Pour stocker nos certificats de manière sécurisée et les rendre accessibles sur plusieurs appareils, nous les chargeons dans Azure Key Vault. Comme vous pouvez le voir dans la liste précédente, nous avons deux types de fichiers de certificat : PFX et PEM. Nous traiterons les fichiers PFX comme des certificats Key Vault à charger dans Key Vault. Les fichiers PEM sont en texte brut, et nous les traiterons comme des secrets Key Vault. Nous utiliserons l’instance de Key Vault associée à l’espace de travail Azure Machine Learning que nous avons créé en exécutant les notebooks Jupyter.

  1. Depuis le portail Azure, accédez à votre espace de travail Azure Machine Learning.

  2. Dans la page de présentation de l’espace de travail Azure Machine Learning, recherchez le nom pour Coffre de clés.

    Capture d’écran montrant la copie du nom du coffre de clés.

  3. Sur votre machine de développement, chargez les certificats dans Key Vault. Remplacez <subscriptionId> et <keyvaultname> par les informations de votre ressource.

    c:\source\IoTEdgeAndMlSample\CreateCertificates\upload-keyvaultcerts.ps1 -SubscriptionId <subscriptionId> -KeyVaultName <keyvaultname>
    
  4. Si vous y êtes invité, connectez-vous à Azure.

  5. Le script s’exécute pendant quelques minutes et génère la liste des nouvelles entrées Key Vault.

    Capture d’écran qui montre la sortie du script Key Vault.

Enregistrer un appareil IoT Edge

Pour connecter un appareil Azure IoT Edge à un hub IoT, nous devons d’abord inscrire l’appareil auprès du hub. Nous prenons la chaîne de connexion de l’identité d’appareil dans le cloud et l’utilisons pour configurer le runtime sur notre appareil IoT Edge. Une fois que l’appareil configuré se connecte au hub, nous pouvons déployer des modules et envoyer des messages. Nous pouvons aussi modifier la configuration de l’appareil IoT Edge physique en changeant son identité d’appareil correspondante dans IoT Hub.

Pour ce tutoriel, nous allons inscrire la nouvelle identité d’appareil à l’aide de Visual Studio Code. Vous pouvez également effectuer ces étapes en utilisant le portail Azure ou Azure CLI. Quelle que soit la méthode choisie, il est important de récupérer la chaîne de connexion de votre appareil IoT Edge. La chaîne de connexion de l’appareil se trouve dans la page de détails de votre appareil sur le portail Azure.

  1. Sur votre machine de développement, ouvrez Visual Studio Code.

  2. Développez le cadre Azure IoT Hub dans la vue Explorer de Visual Studio Code.

  3. Cliquez sur le bouton de sélection et sélectionnez Créer un appareil IoT Edge.

  4. Donnez un nom à l’appareil. Pour des raisons pratiques, nous utilisons le nom aaTurbofanEdgeDevice afin qu’il s’affiche en haut de la liste des appareils.

  5. Le nouvel appareil apparaît dans la liste des appareils.

    Capture d’écran montrant une vue de l’appareil dans Visual Studio Code Explorer.

Déployer une machine virtuelle Azure

Nous utilisons une machine virtuelle Ubuntu 18.04 LTS sur laquelle est installé et configuré le runtime IoT Edge. Le déploiement utilise un modèle Azure Resource Manager qui se trouve dans le dépôt du projet iotedge-vm-deploy. Il provisionne l’appareil IoT Edge que vous avez inscrit à l’étape précédente à l’aide de la chaîne de connexion que vous avez fournie dans le modèle.

Vous pouvez déployer la machine virtuelle à l’aide du portail Azure ou d’Azure CLI. Nous allons vous montrer les étapes à effectuer dans le portail Azure. Pour plus d’informations, consultez Exécuter Azure IoT Edge sur des machines virtuelles Ubuntu.

Déployer à l’aide du Déployer sur Azure

  1. Si vous souhaitez utiliser le modèle ARM iotedge-vm-deploy pour déployer votre machine virtuelle Ubuntu 18.04 LTS, cliquez sur le bouton ci-dessous :

    Bouton déployer sur Azure pour iotedge-vm-deploy

  2. Dans la fenêtre qui vient de s’ouvrir, renseignez les champs de formulaire disponibles.

    Champ Description
    Abonnement Abonnement Azure actif dans lequel déployer la machine virtuelle.
    Groupe de ressources Groupe de ressources existant ou nouvellement créé pour contenir la machine virtuelle et ses ressources associées.
    DNS Label Prefix Valeur obligatoire de votre choix, utilisée pour préfixer le nom d’hôte de la machine virtuelle.
    Nom de l’utilisateur administrateur Nom de l’utilisateur qui sera doté de privilèges root sur le déploiement.
    Chaîne de connexion de l’appareil Chaîne de connexion d’appareil pour un appareil créé dans votre IoT Hub prévu.
    Taille de machine virtuelle Taille de la machine virtuelle à déployer
    Version du système d’exploitation Ubuntu Version du système d’exploitation Ubuntu à installer sur la machine virtuelle de base.
    Lieu Région géographique dans laquelle déployer la machine virtuelle. Par défaut, il s’agit de l’emplacement du groupe de ressources sélectionné.
    Type d'authentification Choisissez sshPublicKey ou mot de passe selon votre préférence.
    Mot de passe ou clé d’administrateur Valeur de la clé publique SSH ou du mot de passe en fonction du choix du type d’authentification.
  3. Lorsque tous les champs sont renseignés, cochez la case située au bas de la page pour accepter les conditions d’utilisation? Ensuite, sélectionnez Vérifier + créer puis Créer pour commencer le déploiement.

  4. Dans le portail Azure, accédez à votre machine virtuelle. Vous pouvez la trouver par le biais de votre groupe de ressources ou en sélectionnant Machines virtuelles sous Services Azure dans la page d’accueil du portail.

  5. Notez le nom DNS de votre machine virtuelle. Vous en aurez besoin pour vous connecter à votre machine virtuelle.

Se connecter à votre appareil IoT Edge

  1. Ouvrez une invite de commandes et utilisez la commande suivante pour vous connecter à votre machine virtuelle. Entrez votre nom d’utilisateur et votre nom DNS en fonction de la section précédente.

    ssh <adminUsername>@<DNS_name>
    
  2. Quand vous êtes invité à valider l’authenticité de l’hôte, entrez yes (oui) et sélectionnez Enter (Entrée).

  3. Quand vous y êtes invité, indiquez votre mot de passe.

  4. Ubuntu affiche un message de bienvenue, puis une invite de type <username>@<machinename>:~$.

Télécharger les certificats de coffre de clés

Plus haut dans cet article, nous avons chargé des certificats dans Key Vault afin de les rendre disponibles pour notre appareil IoT Edge et notre appareil en aval. L’appareil en aval utilise l’appareil IoT Edge comme passerelle pour communiquer avec IoT Hub.

Nous décrivons l’appareil en aval plus loin dans le tutoriel. Dans cette section, téléchargez les certificats sur l’appareil IoT Edge.

  1. À partir de la session SSH sur la machine virtuelle Linux, connectez-vous à Azure avec Azure CLI.

    az login
    
  2. Vous êtes invité à ouvrir un navigateur sur une page de connexion de l’appareil Microsoft et à fournir un code unique. Vous pouvez effectuer ces étapes sur votre machine locale. Fermez la fenêtre de navigateur dès que vous êtes authentifié.

  3. Quand l’authentification est correcte, la machine virtuelle Linux se connecte et liste vos abonnements Azure.

  4. Sélectionnez l’abonnement Azure à utiliser pour les commandes Azure CLI.

    az account set --subscription <subscriptionId>
    
  5. Créez un répertoire sur la machine virtuelle pour les certificats.

    sudo mkdir /edgeMlCertificates
    
  6. Téléchargez les certificats que vous avez stockés dans le coffre de clés : new-edge-device-full-chain.cert.pem, new-edge-device.key.pem et 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
    

Mettre à jour la configuration de l’appareil IoT Edge

Le runtime IoT Edge utilise le fichier /etc/iotedge/config.yaml pour conserver sa configuration. Nous devons mettre à jour trois informations dans ce fichier :

  • Certificats : Certificats à utiliser pour les connexions établies avec les appareils en aval
  • Nom d’hôte : Nom de domaine complet (FQDN) de l’appareil IoT Edge de la machine virtuelle.

Mettez à jour les certificats et le nom d’hôte en modifiant directement le fichier config.yaml.

  1. Ouvrez le fichier config.yaml.

    sudo nano /etc/iotedge/config.yaml
    
  2. Mettez à jour la section des certificats du fichier config.yaml en supprimant le # du début et en définissant le chemin pour que le fichier ressemble à l’exemple suivant :

    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"
    

    Vérifiez que la ligne certificates: n’est pas précédée d’un espace blanc et que chaque certificat imbriqué est mis en retrait de deux espaces.

    Dans nano, cliquez avec le bouton droit pour coller le contenu de votre Presse-papiers à la position actuelle du curseur. Pour remplacer la chaîne, utilisez les touches de direction pour accéder à la chaîne à remplacer, supprimez la chaîne et cliquez avec le bouton droit pour coller à partir de la mémoire tampon.

  3. Dans le portail Azure, accédez à votre machine virtuelle. Copiez le nom DNS (FQDN de la machine) à partir de la section Vue d’ensemble.

  4. Collez le FQDN dans la section du nom d’hôte du fichier config.yaml. Vérifiez que le nom est tout en minuscules.

    hostname: '<machinename>.<region>.cloudapp.azure.com'
    
  5. Enregistrez et fermez le fichier en sélectionnant les touches Ctrl+X, Y, puis Entrée.

  6. Redémarrez le démon IoT Edge.

    sudo systemctl restart iotedge
    
  7. Vérifiez l’état du démon IoT Edge. Après la commande, entrez :q pour quitter.

    systemctl status iotedge
    

Dépannage

Si vous voyez des erreurs (texte en couleur avec le préfixe « [ERROR] ») dans l’état, examinez les journaux du démon pour avoir des informations détaillées sur l’erreur.

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

Pour plus d’informations sur la résolution des erreurs, consultez la page de résolution des problèmes.

Nettoyer les ressources

Ce tutoriel fait partie d’une série où chaque article s’appuie sur le travail effectué dans les articles précédents. Ne nettoyez pas les ressources avant d’avoir terminé le dernier tutoriel.

Étapes suivantes

Nous venons de terminer la configuration d’une machine virtuelle Azure comme passerelle transparente d’IoT Edge. Nous avons d’abord généré des certificats de test que nous avons chargés dans Key Vault. Ensuite, nous avons utilisé un script et un modèle Resource Manager pour déployer la machine virtuelle avec l’image Ubuntu Server 16.04 LTS + runtime Azure IoT Edge de Place de marché Azure. À l’aide de la machine virtuelle opérationnelle, nous nous sommes connectés via SSH. Ensuite, nous nous sommes connectés à Azure et avons téléchargé des certificats à partir de Key Vault. Nous avons effectué plusieurs mises à jour de la configuration du runtime IoT Edge en mettant à jour le fichier config.yaml.

Passez à l’article suivant pour générer des modules IoT Edge.