Créer et provisionner un appareil IoT Edge sur Linux avec des clés symétriques
S’applique à : IoT Edge 1.4
Important
IoT Edge 1.4 est la version prise en charge. Si vous utilisez une version antérieure, consultez Mettre à jour IoT Edge.
Cet article fournit des instructions de bout en bout pour l’inscription et l’approvisionnement d’un appareil Linux IoT Edge, y compris l’installation de IoT Edge.
Chaque appareil qui se connecte à un hub IoT a un ID d’appareil qui est utilisé pour suivre les communications cloud à appareil ou appareil à cloud . Vous configurez un appareil avec ses informations de connexion, notamment :
- Nom d’hôte du hub IoT
- ID de périphérique
- Détails d’authentification pour se connecter à IoT Hub
Les étapes décrites dans cet article décrivent un processus appelé approvisionnement manuel, où vous connectez 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.
Par certificat autosigné X.509 : 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.
Notes
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 explique comment inscrire votre appareil IoT Edge et installer IoT Edge (également appelé runtime IoT Edge) sur votre appareil. Vérifiez que vous disposez de l’outil de gestion des appareils de votre choix, par exemple Azure CLI, et de la configuration requise de l’appareil avant d’inscrire et d’installer votre appareil.
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 ses propres prérequis ou peut avoir besoin d’être installé :
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.
Extensions Visual Studio Code
Si vous utilisez Visual Studio Code, il existe des extensions Azure IoT utiles qui faciliteront le processus de création et de gestion des appareils.
Installez les extensions Azure IoT Edge et Azure IoT Hub :
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.
Connectez-vous au portail Azure et accédez à votre IoT Hub.
Dans le volet de gauche, sélectionnez Appareils dans le menu, puis sélectionnez Ajouter un appareil.
Dans la page Créer un appareil, fournissez les informations suivantes :
- Créez un ID d’appareil descriptif, par exemple
my-edge-device-1
(en minuscules). Copiez cet ID d’appareil, car vous l’utiliserez ultérieurement. - 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 des clés d’authentification, qui connectent le nouvel appareil à votre hub.
- Créez un ID d’appareil descriptif, par exemple
Sélectionnez Enregistrer.
Vous devez voir votre nouvel appareil répertorié dans votre hub IoT.
Maintenant que vous avez un appareil inscrit dans IoT Hub, vous pouvez récupérer les informations d’approvisionnement utilisées pour terminer l’installation et l’approvisionnement du runtime IoT Edge à l’étape suivante.
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. La chaîne de connexion est générée pour votre appareil IoT Edge lorsque vous créez l’appareil. Pour Visual Studio Code et Azure CLI, la chaîne de connexion se trouve dans la sortie JSON. Si vous utilisez le Portail Azure pour créer votre appareil, vous pouvez trouver la chaîne de connexion à partir de l’appareil lui-même. Lorsque vous sélectionnez votre appareil dans votre hub IoT, il est répertorié comme Primary connection string
dans la page de l’appareil.
Les appareils périphériques qui se connectent à votre hub IoT sont répertoriés dans la page Appareils de votre hub IoT. Si vous avez plusieurs appareils, vous pouvez filtrer la liste en sélectionnant le type Appareils Iot Edge, puis sélectionnez Appliquer.
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. Pour trouver votre chaîne de connexion dans le portail :
- Dans la page Appareils, sélectionnez l’ID d’appareil IoT Edge dans la liste.
- Copiez la valeur de Chaîne de connexion principale ou Chaîne de connexion secondaire. L’une ou l’autre clé fonctionne.
Installer IoT Edge
Dans cette section, vous allez préparer votre machine virtuelle ou votre appareil physique Linux à 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 :
22.04 :
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
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
Pour plus d’informations sur les versions du système d’exploitation, consultez Plateformes prises en charge par Azure IoT Edge.
Notes
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 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
Par défaut, le moteur de conteneur Moby ne définit pas de limites de taille pour le journal de conteneur. Au fil du temps, cela peut amener l’appareil à se remplir de journaux et à manquer d’espace disque. Toutefois, vous pouvez configurer votre journal pour qu’il s’affiche localement, bien que cela soit facultatif. Pour en savoir plus sur la configuration de la journalisation, consultez Check-list du déploiement de production.
Les étapes suivantes vous montrent comment configurer votre conteneur pour utiliser local
le pilote de journalisation comme mécanisme de journalisation.
Créez (si le fichier n’y est pas déjà) ou ouvrez le fichier de configuration du démon Docker à l’adresse
/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
etNetwork 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 commedefconfig
oumenuconfig
, 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 service IoT Edge fournit et gère les standards de sécurité sur l’appareil IoT Edge. Le service se lance à chaque démarrage et amorce l’appareil en démarrant le reste du runtime IoT Edge.
Notes
À compter de la version 1.2, le service d’identité IoT gère l’approvisionnement et la gestion des identités pour IoT Edge et pour d’autres composants d’appareil qui doivent communiquer avec IoT Hub.
Les étapes décrites dans cette section représentent le processus classique d’installation de la dernière version IoT Edge 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.
Conseil
Si vous disposez déjà d’un appareil IoT Edge exécutant une version plus ancienne et que vous souhaitez effectuer une mise à niveau vers la dernière version, suivez les étapes décrites dans Mettre à jour le runtime et le démon de sécurité IoT Edge. Les versions ultérieures sont si différente des versions précédentes d’IoT Edge que des étapes spécifiques sont nécessaires pour la mise à niveau.
Installez la dernière version de IoT Edge et le package du service d’identité IoT (si vous n’êtes pas déjà à jour) :
22.04 :
sudo apt-get update; \ sudo apt-get install aziot-edge
20.04 ou 18.04 :
sudo apt-get update; \ sudo apt-get install aziot-edge defender-iot-micro-agent-edge
Le package facultatif defender-iot-micro-agent-edge
inclut l’Microsoft Defender pour le micro-agent de sécurité IoT qui fournit une visibilité des points de terminaison sur la gestion de la posture de sécurité, les vulnérabilités, la détection des menaces, la gestion de la flotte et bien plus encore pour vous aider à sécuriser vos appareils IoT Edge. Il est recommandé d’installer le micro-agent avec l’agent Edge pour activer la supervision et le renforcement de la sécurité de vos appareils Edge. Pour en savoir plus sur Microsoft Defender pour IoT, consultez Présentation de Microsoft Defender pour IoT pour les générateurs d’appareils.
Provisionnement de l’appareil avec son identité cloud
Maintenant que le moteur de conteneur et le runtime IoT Edge sont installés sur votre appareil, vous êtes prêt à configurer l’appareil avec son identité cloud et ses informations d’authentification.
Vous pouvez rapidement configurer votre appareil IoT Edge avec une authentification par clé symétrique en utilisant la commande suivante :
sudo iotedge config mp --connection-string 'PASTE_DEVICE_CONNECTION_STRING_HERE'
Cette iotedge config mp
commande crée un fichier de configuration sur l’appareil et entre votre chaîne de connexion dans le fichier de configuration.
Appliquez les modifications de la configuration.
sudo iotedge config apply
Pour afficher le fichier de configuration, vous pouvez l’ouvrir :
sudo nano /etc/aziot/config.toml
Déployer des modules
Pour déployer vos modules IoT Edge, accédez à votre hub IoT dans le Portail Azure, puis :
Sélectionnez Appareils dans le menu IoT Hub.
Sélectionnez votre appareil pour ouvrir sa page.
Sélectionnez l’onglet Définir les modules .
Étant donné que nous voulons déployer le IoT Edge modules par défaut (edgeAgent et edgeHub), nous n’avons pas besoin d’ajouter de modules à ce volet. Sélectionnez Donc Vérifier + créer en bas.
Vous voyez la confirmation JSON de vos modules. Sélectionnez Créer pour déployer les modules.
Pour plus d’informations, consultez Déployer un module.
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 iotedge system status
Une réponse status réussie indique que les
aziot
services sont en cours d’exécution ou prêts.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
Utilisez l’outil
check
pour vérifier l’état de la configuration et de la connexion de l’appareil.sudo iotedge check
Vous pouvez vous attendre à une plage de réponses qui peut inclure OK (vert), Avertissement (jaune) ou Erreur (rouge).
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.Notes
Sur un appareil nouvellement approvisionné, vous pourriez voir une erreur liée à IoT Edge Hub :
× préparation à la production : le répertoire de stockage du hub Edge est conservé sur le système de fichiers hôte - Erreurimpossible d’case activée’état actuel du conteneur edgeHub
Cette erreur est attendue sur un appareil nouvellement provisionné, car le module IoT Edge Hub n’est pas encore en cours d’exécution. Assurez-vous que vos modules IoT Edge ont été déployés dans les étapes précédentes. Le déploiement résout cette erreur.
Vous pouvez également voir un code status comme
417 -- The device's deployment configuration is not set
. Une fois vos modules déployés, cette status change.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.
Vérifiez que votre appareil et vos modules sont déployés et en cours d’exécution, en consultant la page de votre appareil dans le Portail Azure.
Une fois vos modules déployés et en cours d’exécution, répertoriez-les sur votre appareil ou machine virtuelle avec la commande suivante :
sudo iotedge list
Installation d’une version spécifique hors connexion (facultatif)
Les étapes de cette section concernent les scénarios non couverts par les étapes d’installation standard. Cela peut inclure :
- Installation de IoT Edge en mode hors connexion
- Installation d’une version release candidate
Suivez 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.
Notes
Si votre appareil exécute actuellement IoT Edge version 1.1 ou une version antérieure, désinstallez les packages iotedge et libiothsm-std avant de suivre les étapes de cette section. Pour plus d’informations, consultez Mise à jour de la version 1.0 ou 1.1 vers la dernière version.
Accédez aux versions d’Azure IoT Edgeet recherchez celle que vous souhaitez cibler.
Développez la section Ressources pour cette version.
Chaque mise en production devrait avoir de nouveaux fichiers pour IoT Edge et le service d’identité. 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.
Recherchez le fichier aziot-identity-service correspondant à l’architecture de votre appareil IoT Edge. Cliquez avec le bouton droit de la souris sur le lien de fichier et copiez l’adresse du lien.
Utilisez le lien copié dans la commande suivante pour installer cette version du service d’identité :
curl -L <identity service link> -o aziot-identity-service.deb && sudo apt-get install ./aziot-identity-service.deb
Recherchez le fichier aziot-edge correspondant à l’architecture de votre appareil IoT Edge. Cliquez avec le bouton droit de la souris sur le lien de fichier et copiez l’adresse du lien.
Utilisez le lien copié dans la commande suivante pour installer cette version d’IoT Edge.
curl -L <iotedge link> -o aziot-edge.deb && sudo apt-get install ./aziot-edge.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 --purge aziot-edge
Omettez l’indicateur --purge
si vous prévoyez de réinstaller IoT Edge et d’utiliser les mêmes informations de configuration à l’avenir. Le indicateur --purge
supprime tous les fichiers associés à IoT Edge, y compris vos fichiers de configuration.
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