Tutoriel : Azure Device Update pour IoT Hub avec une image Raspberry Pi
Device Update pour Azure IoT Hub prend en charge les mises à jour basées sur une image, un package et un script. Ce tutoriel propose une démonstration de mise à jour Device Update pour IoT Hub basée sur une image de bout en bout en utilisant une image Yocto sur une carte Raspberry Pi 3 B+.
Les mises à jour d’image proposent un niveau de confiance élevé dans l’état final de l’appareil et ne posent pas les mêmes problèmes de gestion de packages et de dépendances que les mises à jour basées sur un package ou un script. Il est plus facile de répliquer les résultats d’une mise à jour d’image entre un environnement de préproduction et de production, ou d’adopter facilement un modèle de basculement A/B.
Dans ce tutoriel, vous allez :
- Télécharger et installer une mise à jour d’image.
- Ajouter une balise à votre appareil IoT.
- Importer la mise à jour d’image.
- Déployer la mise à jour d’image.
- Afficher l’historique des déploiements de mises à jour.
Prérequis
Un compte et une instance Device Update configurés avec un hub IoT.
Une carte IoT Raspberry Pi 3 connectée au matériel via Ethernet qui peut télécharger et extraire les fichiers image et contrôler l’appareil.
Remarque
Les mises à jour d’image mentionnées dans ce tutoriel ont été validées sur une carte Raspberry Pi B3.
Inscrire l’appareil et obtenir la chaîne de connexion
Ajoutez votre appareil au registre d’appareils de votre hub IoT et obtenez la chaîne de connexion qu’IoT Hub génère pour l’appareil.
- Dans le Portail Azure, ouvrez la page de hub IoT associée à votre instance Device Update.
- Dans le volet de navigation gauche, sélectionnez Gestion des appareils>Appareils.
- Sur la page Appareils, sélectionnez Ajouter un appareil.
- Sous ID de périphérique, entrez un nom pour l’appareil. Vérifiez que la case Générer automatiquement les clés est cochée.
- Cliquez sur Enregistrer. L’appareil figure dans la liste de la page Appareils.
- Sur la page Appareils, sélectionnez l’appareil que vous avez inscrit.
- Sur la page de l’appareil, sélectionnez l’icône Copier à côté de Chaîne de connexion (clé primaire). Enregistrez cette chaîne de connexion d’appareil à utiliser lorsque vous configurez l’agent Device Update.
Remarque
Pour les besoins de la démonstration, ce tutoriel utilise une chaîne de connexion d’appareil pour s’authentifier et se connecter auprès du hub IoT. Pour les scénarios de production, il est préférable d’utiliser l’identité de module et le service d'identité IoT pour approvisionner les appareils. Si vous souhaitez en savoir plus, veuillez consulter Approvisionnement de l’agent Device Update.
Installer Raspberry Pi
Le fichier Tutorial_RaspberryPi3.zip contient tous les fichiers requis pour le tutoriel. Téléchargez le fichier à partir de la section Assets de la dernière version sur la page GitHub des versions de Device Update.
Dans le dossier Tutorial_RaspberryPi3 extrait, l’image de base que vous pouvez flasher sur la carte Raspberry Pi est adu-base-image-raspberrypi3.wic. L’image de base utilise une build Yocto basée sur la version 3.4.4. L’image comporte l’agent Device Update et SWUpdate, qui active la mise à jour à double partition Device Update. Si vous souhaitez en savoir plus sur les couches Yocto, veuillez consulter Créer un système Linux personnalisé avec l’agent Device Update en utilisant le projet Yocto.
Les fichiers de mise à jour que vous importez via Device Update sont les suivants :
- Fichier SWUpdate adu-update-image-raspberrypi3-1.2.0.swu
- Script SWUpdate personnalisé example-a-b-update.sh
- Manifeste EDS-ADUClient.yocto-update.1.2.0.importmanifest.json
Utiliser bmaptool pour flasher la carte SD
Important
Le logiciel Azure Device Update pour IoT Hub est soumis aux termes de contrat de licence suivants :
Lisez les termes du contrat de licence avant d’utiliser l’agent. L’installation et l’utilisation de l’agent vaut pour acception de ces termes. Si vous n’acceptez pas les termes du contrat de licence, n’utilisez pas l’agent Device Update.
Utilisez un outil de flashage de système d’exploitation pour installer l’image de base de Device Update sur la carte SD que vous utilisez dans l’appareil Raspberry Pi. Les instructions suivantes utilisent bmaptool
pour le flashage sur la carte SD. Remplacez l’espace réservé <device>
par le nom de votre appareil et l’espace réservé <path to image>
par le chemin d’accès au fichier image téléchargé.
Installez l’utilitaire
bmap-tools
si vous ne le possédez pas.sudo apt-get install bmap-tools
Repérez le chemin d’accès à la carte SD dans /dev. Le chemin d’accès doit se présenter comme suit : /dev/sd* ou /dev/mmcblk*. Vous pouvez recourir à l’utilitaire
dmesg
pour rechercher le chemin correct.Démontez toutes les partitions montées avant l’effectuer le flashage.
sudo umount /dev/<device>
Veillez à disposer des autorisations d’accès en écriture sur l’appareil.
sudo chmod a+rw /dev/<device>
Flashez la carte SD.
sudo bmaptool copy <path to image> /dev/<device>
Conseil
Pour accélérer le flashage, vous pouvez télécharger le fichier bimap et le fichier image et les placer ensuite dans le même répertoire.
Configuration de l’agent Devise Update sur Raspberry Pi
Vérifiez que l’appareil Raspberry Pi est connecté au réseau.
Sécurisez le shell (SSH) dans l’appareil Raspberry Pi en utilisant la commande suivante dans une fenêtre PowerShell :
ssh raspberrypi3 -l root
Créer les fichiers de configuration de Device Update
Les fichiers de configuration du-config.json et du-diagnostics-config.json de Device Update doivent se trouver sur l’appareil. Pour créer les fichiers, exécutez les commandes suivantes dans le terminal connecté à l’appareil Raspberry Pi.
Pour créer le fichier du-config.json ou l’ouvrir pour modification, exécutez la commande suivante :
nano /adu/du-config.json
L’éditeur ouvre le fichier du-config.json. Si vous créez le fichier, il est vide. Copiez et collez le code suivant dans le fichier, en remplaçant les valeurs d’exemple par les configurations requises pour votre appareil. Remplacez la chaîne d’exemple
connectionData
par la chaîne de connexion de l’appareil que vous avez copiée à l’étape d’inscription de l’appareil.{ "schemaVersion": "1.0", "aduShellTrustedUsers": [ "adu", "do" ], "manufacturer": "contoso", "model": "virtual-vacuum-v2", "agents": [ { "name": "main", "runas": "adu", "connectionSource": { "connectionType": "string", "connectionData": "HostName=<hub_name>.azure-devices.net;DeviceId=<device_id>;SharedAccessKey=<device_key>" }, "manufacturer": "contoso", "model": "virtual-vacuum-v2" } ] }
Appuyez sur Ctrl+X pour quitter l’éditeur, puis entrez y pour enregistrer vos modifications.
Créez le fichier du-diagnostics-config.json en utilisant des commandes similaires. Créez et ouvrez le fichier :
nano /adu/du-diagnostics-config.json
Copiez et collez le code du-diagnostics-config.json suivant dans le fichier. Les valeurs correspondent aux emplacements par défaut des journaux Device Update, et vous n’avez besoin de les modifier que si votre configuration se distingue de la configuration par défaut.
{ "logComponents":[ { "componentName":"adu", "logPath":"/adu/logs/" }, { "componentName":"do", "logPath":"/var/log/deliveryoptimization-agent/" } ], "maxKilobytesToUploadPerLogPath":50 }
Appuyez sur Ctrl+X pour quitter l’éditeur, puis entrez y pour enregistrer vos modifications.
Utilisez la commande suivante pour afficher les fichiers situés dans le répertoire /adu/. Les deux fichiers de configuration doivent s’y trouver.
ls -la /adu/
Utilisez la commande suivante pour redémarrer le démon système Device Update et vérifier que les configurations sont appliquées.
systemctl start deviceupdate-agent
Vérifiez que l’agent est actif en exécutant la commande suivante :
systemctl status deviceupdate-agent
L’état doit indiquer qu’il est actif (couleur verte).
Se connecter à l’appareil dans IoT Hub et ajouter une balise de groupe
Sur la page du hub IoT du Portail Azure pour votre instance Device Update, sélectionnez Gestion des appareils>Appareils dans le volet de navigation gauche.
Sur la page Appareils, sélectionnez le nom de votre appareil.
Dans la partie supérieure de la page de l’appareil, sélectionnez Jumeau d’appareil.
Sur la page Jumeau d’appareil, sous la section
"reported"
de la section"properties"
du jumeau d’appareil, recherchez la version du noyau Linux de votre appareil.Pour un nouvel appareil qui n’a pas reçu de mise à jour de Device Update, la valeur de la propriété DeviceManagement:DeviceInformation:1.swVersion représente la version du microprogramme s’exécutant sur l’appareil. Une fois qu’une mise à jour a été appliquée à l’appareil, la valeur de la propriété AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId représente la version du microprogramme.
Les noms de fichiers image de base et de mise à jour présentent le format adu-<type d’image>-image-<ordinateur>-<numéro de version>.<extension>. Notez les numéros de version à utiliser lors de l’importation de la mise à jour.
Ajouter une balise de groupe
Device Update organise automatiquement les appareils en groupes en fonction des balises et des propriétés de compatibilité qui leur sont attribuées. Chaque appareil ne peut appartenir qu’à un seul groupe, mais les groupes peuvent avoir plusieurs sous-groupes pour trier différentes classes d’appareils. Pour plus d’informations sur les balises et les groupes, consultez Gérer les groupes d’appareils.
Dans le jumeau d’appareil, supprimez les valeurs de balise Device Update existantes en leur attribuant la valeur null, puis ajoutez la nouvelle balise de groupe Device Update suivante. Si vous utilisez une identité de module avec l’agent Device Update, ajoutez la balise dans le Jumeau d’identité de module et non dans le jumeau d’appareil.
"tags": { "ADUGroup": "<CustomTagValue>" },
La capture d’écran suivante montre où ajouter la balise dans le fichier.
Cliquez sur Enregistrer.
Importer la mise à jour
Sur la page du hub IoT du Portail Azure pour votre instance Device Update, sélectionnez Gestion des appareils>Mises à jour dans le volet de navigation gauche.
Sur la page Mises à jour, sélectionnez Importer une nouvelle mise à jour.
Sur la page Importer une mise à jour, sélectionnez Sélectionner dans le conteneur de stockage.
Sur la page Comptes de stockage, sélectionnez un compte de stockage existant ou créez-en un en sélectionnant Compte de stockage.
Sur la page Conteneurs, sélectionnez un conteneur existant ou créez-en un en sélectionnant Conteneur. Le conteneur vous permet d’indexer les fichiers de mise à jour pour l’importation.
Conseil
Pour éviter d’importer accidentellement des fichiers de mises à jour précédentes, utilisez un nouveau conteneur chaque fois que vous importez une mise à jour. Si vous n’utilisez pas de nouveau conteneur, veillez à supprimer tous les fichiers du conteneur existant.
Sur la page du conteneur, sélectionnez Charger. Faites glisser-déplacer les fichiers de mise à jour suivants dans le dossier Tutorial_RaspberryPi3 que vous avez téléchargé (ou accédez à ce dernier et sélectionnez les fichiers) :
- adu-update-image-raspberrypi3-1.2.0.swu
- example-a-b-update.sh
- EDS-ADUClient.yocto-update.1.2.0.importmanifest.json
Sélectionnez Charger. Une fois chargés, les fichiers s’affichent sur la page du conteneur.
Sur la page du conteneur, passez en revue les fichiers à importer, sélectionnez-les, puis choisissez Sélectionner.
Sur l’écran Importer la mise à jour, sélectionnez Importer la mise à jour.
Le processus d’importation commence et l’écran Mises à jour s’affiche. À l’issue de l’importation, celle-ci apparaît sous l’onglet Mises à jour. Pour plus d’informations sur le processus d’importation, consultez Importer une mise à jour vers Device Update.
Sélectionner le groupe d’appareils
Vous pouvez utiliser la balise de groupe que vous avez appliquée à votre appareil pour déployer la mise à jour sur le groupe d’appareils. Sélectionnez l’onglet Groupes et déploiements dans la partie supérieure de la page Mises à jour pour voir la liste des groupes et des déploiements et le graphique de conformité de la mise à jour.
Le graphique de conformité des mises à jour montre le nombre d’appareils dans différents états de conformité : À la mise à jour la plus récente, Nouvelles mises à jour disponibles et Mises à jour en cours. Pour plus d’informations, consultez Conformité de Device Update.
Sous Nom de groupe figure la liste de tous les groupes d’appareils pour les appareils connectés à ce hub IoT et leurs mises à jour disponibles, avec des liens pour déployer les mises à jour sous État. Les appareils qui ne répondent pas aux exigences de classe d’appareil d’un groupe s’affichent dans un groupe non valide correspondant. Pour plus d’informations sur les balises et les groupes, consultez Gérer les groupes d’appareils.
Vous devriez y trouver le groupe d’appareils qui contient l’appareil que vous avez configuré dans ce tutoriel, de même que les mises à jour disponibles pour les appareils du groupe. Vous devrez probablement actualiser la page. Pour déployer la meilleure mise à jour disponible vers un groupe de cet affichage, sélectionnez Déployer à côté du groupe.
Déployer la mise à jour
Sur la page Détails du groupe, sélectionnez l’onglet Déploiement actuel, puis sélectionnez Déployer à côté de la mise à jour souhaitée dans la section Mises à jour disponibles. La meilleure mise à jour disponible pour le groupe est mise en avant avec la mention Optimale.
Sur la page Créer un déploiement, planifiez le démarrage de votre déploiement (immédiat ou futur), puis sélectionnez Créer.
Conseil
Par défaut, la date et l’heure de Début est définie sur 24 heures à partir de votre heure actuelle. Veillez à sélectionner une autre date et heure si vous souhaitez que le déploiement commence plus tôt.
Sous Détails du déploiement, État devient Actif. Sous Mises à jour disponibles, la mise à jour sélectionnée est marquée avec (déploiement).
Sur la page Mises à jour, affichez le graphique de conformité pour voir que la mise à jour est maintenant en cours. Une fois l’appareil correctement mis à jour, les détails du déploiement et du graphique de conformité se mettent à jour pour refléter cet état.
Afficher l’historique des déploiements de mises à jour
Pour afficher l’historique des déploiements :
Sélectionnez l’onglet Historique des déploiements dans la partie supérieure de page Détails du groupe, puis sélectionnez le lien détails à côté du déploiement que vous avez créé.
Sur la page Détails du déploiement, sélectionnez Actualiser pour afficher les dernières informations d’état.
Nettoyer les ressources
Dès lors que vous n’avez plus besoin des ressources que vous avez créées pour ce tutoriel, vous pouvez les supprimer.
- Dans le Portail Azure, accédez au groupe de ressources qui contient les ressources.
- Si vous voulez supprimer toutes les ressources dans le groupe, sélectionnez Supprimer le groupe de ressources.
- Si vous souhaitez supprimer seulement certaines ressources, utilisez les cases à cocher pour sélectionner les ressources en question, puis sélectionnez Supprimer.
Étapes suivantes
- Device Update pour IoT Hub avec un agent de simulateur
- Device Update pour IoT Hub avec un agent de package