Partager via


Créer et provisionner un appareil IoT Edge sur Linux avec des clés symétriques

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.

Cet article fournit des instructions de bout en bout pour l’inscription et l’approvisionnement d’un appareil IoT Edge Linux, incluant l’installation d’IoT Edge.

Chaque appareil qui se connecte à un hub IoT possède un ID d’appareil qui sert au suivi des communications cloud-à-appareil ou appareil-à-cloud. Vous configurez un appareil avec ses informations de connexion, qui comprennent le nom d’hôte du hub IoT, l’ID d’appareil ainsi que les informations que l’appareil utilise pour s’authentifier auprès d’IoT Hub.

Les étapes de cet article suivent un processus appelé approvisionnement manuel, qui consiste à connecter un seul appareil à son hub IoT. Avec le provisionnement manuel, vous avez le choix entre deux méthodes d’authentification des appareils IoT Edge :

  • Clés symétriques : quand vous créez une identité d’appareil dans IoT Hub, le service crée deux clés. Vous placez l’une des clés sur l’appareil, lequel présente la clé à IoT Hub au moment de l’authentification.

    Cette méthode d’authentification est plus rapide pour commencer, mais moins sûre que l’autre.

  • X.509 autosigné : vous créez deux certificats d’identité X.509 que vous placez sur l’appareil. Quand vous créez une identité d’appareil dans IoT Hub, vous fournissez les empreintes numériques des deux certificats. Quand l’appareil s’authentifie auprès de IoT Hub, il présente un certificat et IoT Hub vérifie que le certificat correspond à son empreinte numérique.

    Cette méthode d’authentification étant plus sécurisée, elle est recommandée dans les scénarios de production.

Cet article traite de l’utilisation de clés symétriques comme méthode d’authentification. Si vous souhaitez utiliser des certificats X.509, consultez Créer et approvisionner un appareil IoT Edge sur Linux à l’aide de certificats X.509.

Remarque

Si vous avez de nombreux appareils à configurer et que vous ne souhaitez pas les provisionner manuellement, consultez l’un des articles suivants pour découvrir comment IoT Edge fonctionne avec le service IoT Hub Device Provisioning :

Prérequis

Cet article traite de l’inscription de votre appareil IoT Edge et de l’installation d’IoT Edge sur l’appareil. Ces tâches ont des conditions préalables et différents utilitaires sont utilisés pour les accomplir. Assurez-vous que toutes les conditions préalables sont remplies avant de continuer.

Outils de gestion des appareils

Vous avez le choix d’utiliser le portail Azure, Visual Studio Code ou Azure CLI pour inscrire votre appareil. Chaque utilitaire a sa propre configuration requise :

Un hub IoT gratuit ou standard dans votre abonnement Azure.

Exigences relatives aux appareils

Un appareil Linux x64, ARM32 ou ARM64.

Microsoft publie des packages d’installation pour divers systèmes d’exploitation.

Pour les dernières informations sur les systèmes d’exploitation actuellement pris en charge pour les scénarios de production, consultez Systèmes pris en charge par Azure IoT Edge.

Inscrire votre appareil

Vous avez le choix d’utiliser le portail Azure, Visual Studio Code ou Azure CLI pour inscrire votre appareil.

Dans votre hub IoT dans le portail Azure, les appareils IoT Edge sont créés et managés séparément des appareils IoT qui ne sont pas compatibles avec Edge.

  1. Connectez-vous au portail Azure et accédez à votre IoT Hub.

  2. Dans le volet de gauche, sélectionnez Appareils dans le menu, puis sélectionnez Ajouter un appareil.

  3. Dans la page Créer un appareil, fournissez les informations suivantes :

    • Créez un ID d’appareil descriptif. Notez cet ID d’appareil, car vous en aurez besoin plus tard.
    • Cochez la case Appareil IoT Edge.
    • Sélectionnez Clé symétrique comme type d’authentification.
    • Utilisez les paramètres par défaut pour générer automatiquement les clés d’authentification et connecter le nouvel appareil à votre hub.
  4. Cliquez sur Enregistrer.

Maintenant que vous avez un appareil inscrit dans IoT Hub, récupérez les informations à utiliser pour terminer l’installation et le provisionnement du runtime IoT Edge.

Afficher les appareils inscrits et récupérer les informations de provisionnement

Les appareils qui utilisent l’authentification de clé symétrique ont besoin de leurs chaînes de connexion pour terminer l’installation et l’approvisionnement du runtime IoT Edge.

Les appareils compatibles avec Edge qui se connectent à votre hub IoT sont répertoriés dans la page Appareils. Vous pouvez filtrer la liste par type d’Appareil Iot Edge.

Capture d’écran montrant comment afficher vos appareils dans le portail Azure, IoT Hub.

Pour configurer votre appareil, vous avez besoin de la chaîne de connexion qui établit un lien entre votre appareil physique et son identité dans le hub IoT.

Les appareils qui s’authentifient avec des clés symétriques disposent des chaînes de connexion pouvant être copiées dans le portail.

  1. Dans la page Appareils du portail, sélectionnez l’ID d’appareil IoT Edge dans la liste.
  2. Copiez la valeur de Chaîne de connexion principale ou Chaîne de connexion secondaire.

Installer IoT Edge

Dans cette section, vous préparez votre machine virtuelle ou votre appareil physique Linux pour IoT Edge. Ensuite, vous installez IoT Edge.

Exécutez les commandes suivantes pour ajouter le dépôt de packages, puis ajoutez la clé de signature du package Microsoft à votre liste de clés approuvées.

Important

Le 30 juin 2022, Raspberry Pi OS Stretch a été retiré de la liste de prise en charge des systèmes d’exploitation de niveau 1. Pour éviter des vulnérabilités de sécurité potentielles, mettez à jour votre système d’exploitation hôte vers Bullseye.

L’installation peut se faire avec quelques commandes. Ouvrez un terminal et exécutez les commandes suivantes :

  • 20.04 :

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 18.04 :

    wget https://packages.microsoft.com/config/ubuntu/18.04/multiarch/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

Remarque

Les packages logiciels Azure IoT Edge sont soumis aux termes du contrat de licence situés dans chaque package (usr/share/doc/{package-name} ou dans le répertoire LICENSE). Lisez les termes du contrat de licence avant d’utiliser un package. Le fait d’installer et d’utiliser un package revient à accepter ces termes. Si vous n’acceptez pas les termes du contrat de licence, n’utilisez pas le package en question.

Installer un moteur de conteneur

Azure IoT Edge s’appuie sur un runtime de conteneur compatible avec OCI. Dans les scénarios de production, nous vous recommandons d’utiliser le moteur Moby. Le moteur Moby est le seul moteur de conteneur officiellement pris en charge avec IoT Edge. Les images conteneur Docker CE/EE sont compatibles avec le runtime Moby.

Installez le moteur Moby.

sudo apt-get update; \
  sudo apt-get install moby-engine

Une fois le moteur Moby installé, configurez-le pour utiliser le pilote de journalisation local comme mécanisme de journalisation. Pour en savoir plus sur la configuration de la journalisation, consultez Check-list du déploiement de production.

  • Créez ou ouvrez le fichier config du démon Docker sur /etc/docker/daemon.json.

  • Définissez le pilote de journalisation par défaut sur le pilote de journalisation local, comme indiqué dans l’exemple ci-dessous.

       {
          "log-driver": "local"
       }
    
  • Redémarrez le moteur de conteneur pour appliquer les changements.

    sudo systemctl restart docker
    

    Conseil

    Si des erreurs surviennent quand vous installez le moteur de conteneur Moby, vérifiez la compatibilité de votre noyau Linux avec Moby. Certains fabricants d’appareils embarqués livrent des images d’appareils qui contiennent des noyaux Linux personnalisés sans les fonctionnalités nécessaires à la compatibilité du moteur de conteneur. Exécutez la commande suivante, qui utilise le script check-config fourni par Moby pour vérifier la configuration de votre noyau :

    curl -ssl https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh
    chmod +x check-config.sh
    ./check-config.sh
    

    Dans la sortie du script, vérifiez que tous les éléments sous Generally Necessary et Network Drivers sont activés. S’il vous manque des fonctionnalités, activez-les en regénérant votre noyau à partir de la source et en sélectionnant les modules associés à inclure dans le fichier .config du noyau approprié. De la même façon, si vous utilisez un générateur de configuration du noyau comme defconfig ou menuconfig, recherchez et activez les fonctionnalités respectives, et regénérez votre noyau en conséquence. Une fois que vous avez déployé votre nouveau noyau modifié, réexécutez le script check-config pour vérifier que toutes les fonctionnalités requises ont été activées avec succès.

Installer le runtime IoT Edge

Le démon de sécurité IoT Edge fournit et gère les standards de sécurité sur l’appareil IoT Edge. Le démon se lance à chaque démarrage et amorce l’appareil en démarrant le reste du runtime IoT Edge.

La procédure de cette section représente le processus classique d’installation de la dernière version sur un appareil disposant d’une connexion Internet. Si vous devez installer une version spécifique, comme une préversion, ou si vous devez installer en mode hors connexion, suivez les étapes d’installation d’une version hors connexion ou spécifique plus loin dans cet article.

Installez IoT Edge version 1.1.* avec le package libiothsm-std :

sudo apt-get update; \
  sudo apt-get install iotedge

Remarque

IoT Edge version 1.1 est la branche de support à long terme d’IoT Edge. Si vous exécutez une version antérieure, nous vous recommandons d’installer ou de mettre à jour vers le correctif le plus récent, car les versions antérieures ne sont plus prises en charge.

Provisionnement de l’appareil avec son identité cloud

Maintenant que le moteur de conteneur et le runtime d’IoT Edge sont installés sur votre appareil, vous pouvez passer à l’étape suivante, à savoir configurer l’appareil avec ses informations d’identité et d’authentification cloud.

Sur l’appareil IoT Edge, ouvrez le fichier de configuration.

sudo nano /etc/iotedge/config.yaml

Recherchez les configurations d’approvisionnement du fichier et supprimez les marques de commentaire de la section Manual provisioning configuration using a connection string si ce n’est déjà fait.

# Manual provisioning configuration using a connection string
provisioning:
source: "manual"
device_connection_string: "ADD_DEVICE_CONNECTION_STRING_HERE"

Mettez à jour la valeur de device_connection_string avec la chaîne de connexion à partir de votre appareil IoT Edge. Vérifiez que toutes les autres sections d’approvisionnement sont commentées. Vérifiez que l’approvisionnement : la ligne n’a pas d’espace blanc précédent et que les éléments imbriqués sont mis en retrait par deux espaces.

Pour coller le contenu du Presse-papiers dans Nano, appuyez sur Shift+Right Click ou sur Shift+Insert.

Enregistrez le fichier et fermez-le.

CTRL + X, , YEnter

Après avoir entré les informations de provisionnement dans le fichier de configuration, redémarrez le démon :

sudo systemctl restart iotedge

Vérification de la réussite de la configuration

Vérifiez que le runtime a été correctement installé et configuré sur votre appareil IoT Edge.

Conseil

Vous avez besoin de privilèges élevés pour exécuter les commandes iotedge. Une fois que vous vous déconnectez de votre machine et que vous vous reconnectez pour la première fois après avoir installé le runtime IoT Edge, vos autorisations sont automatiquement mises à jour. Dans l’intervalle, ajoutez sudo devant les commandes.

Vérifiez que le service système IoT Edge est en cours d’exécution.

sudo systemctl status iotedge

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

journalctl -u iotedge

Utilisez l’outil check pour vérifier l’état de la configuration et de la connexion de l’appareil.

sudo iotedge check

Conseil

Utilisez toujours sudo pour exécuter l’outil de vérification, même après la mise à jour de vos autorisations. L’outil a besoin de privilèges élevés pour accéder au fichier config pour vérifier l’état de la configuration.

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.

Affichez tous les modules s’exécutant sur votre appareil IoT Edge. Lors du premier démarrage du service, seul le module edgeAgent apparaît dans cette liste. Le module edgeAgent s’exécute par défaut et vous aide à installer et démarrer tous les modules supplémentaires que vous déployez sur votre appareil.

sudo iotedge list

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.

Installation d’une version spécifique ou hors connexion (facultatif)

Les étapes de cette section concernent les scénarios non couverts par les étapes d’installation standard. Cela peut inclure :

  • Installer IoT Edge en mode hors connexion
  • Installer une version Release candidate

Utilisez les étapes de cette section si vous souhaitez installer une version spécifique du runtime Azure IoT Edge, qui n’est pas disponible via votre gestionnaire de package. La liste des packages Microsoft contient uniquement un ensemble limité de versions récentes et leurs sous-versions. Par conséquent, ces étapes sont destinées à toute personne souhaitant installer une version antérieure ou une version Release Candidate.

À l’aide de commandes curl, vous pouvez cibler les fichiers de composants directement à partir du référentiel GitHub IoT Edge.

  1. Accédez aux versions d’Azure IoT Edgeet recherchez celle que vous souhaitez cibler.

  2. Développez la section Ressources pour cette version.

  3. Chaque version devrait avoir de nouveaux fichiers pour le démon de sécurité IoT Edge et le hsmlib. Si vous envisagez d’installer IoT Edge sur un appareil hors connexion, téléchargez ces fichiers à l’avance. Autrement, utilisez les commandes suivantes pour mettre à jour ces composants.

    1. Trouvez le fichier libiothsm-std qui correspond à l’architecture de votre périphérique IoT Edge. Cliquez avec le bouton droit de la souris sur le lien de fichier et copiez l’adresse du lien.

    2. Utilisez le lien copié dans la commande suivante pour installer cette version du hsmlib :

      curl -L <libiothsm-std_link> -o libiothsm-std.deb && sudo apt-get install ./libiothsm-std.deb
      
    3. Trouvez le fichier iotedge qui correspond à l’architecture de votre périphérique IoT Edge. Cliquez avec le bouton droit de la souris sur le lien de fichier et copiez l’adresse du lien.

    4. Utilisez le lien copié dans la commande suivante pour installer cette version du démon de sécurité de l’IoT Edge.

      curl -L iotedge_link_here -o iotedge.deb && sudo apt-get install ./iotedge.deb
      

Maintenant que le moteur de conteneur et le runtime IoT Edge sont installés sur votre appareil, vous pouvez passer à l’étape suivante, Provisionnement de l’appareil avec son identité cloud.

Désinstaller IoT Edge

Si vous souhaitez supprimer l’installation d’IoT Edge de votre appareil, utilisez les commandes suivantes.

Supprimez le runtime IoT Edge.

sudo apt-get autoremove iotedge

Lors de la suppression du runtime IoT Edge, tous les conteneurs qu’il a créés sont arrêtés, mais continuent d’exister sur votre appareil. Affichez tous les conteneurs pour voir ceux qui restent.

sudo docker ps -a

Supprimez les conteneurs de votre appareil, dont les deux conteneurs de runtime.

sudo docker rm -f <container name>

Enfin, supprimez le runtime du conteneur de votre appareil.

sudo apt-get autoremove --purge moby-engine