Tutoriel : Device Update pour Azure IoT Hub à l’aide de l’image de référence Raspberry Pi 3 B+

Device Update pour Azure IoT Hub prend en charge les mises à jour basées sur une image, un package et un script.

Les mises à jour basées sur une image offrent un niveau de confiance plus élevé pour l’état final de l’appareil. Il est généralement plus facile de répliquer les résultats d’une mise à jour d’image entre un environnement de préproduction et un environnement de production, car il ne pose pas les mêmes défis que les packages et leurs dépendances. En raison de leur nature atomique, il est facile d'adopter un modèle de basculement A/B.

Ce tutoriel vous guide tout au long des étapes permettant d’effectuer une mise à jour basée sur des images de bout en bout à l’aide de Device Update pour IoT Hub sur une carte Raspberry Pi 3 B+.

Dans ce tutoriel, vous apprendrez comment le faire :

  • Téléchargez une image.
  • Ajoutez une balise à votre appareil IoT.
  • Importez une mise à jour.
  • Créer un groupe d'appareils
  • Déployez une mise à jour d’image.
  • Supervisez le déploiement de la mise à jour.

Remarque

Les mises à jour d’images de ce tutoriel ont été validées sur la carte Raspberry Pi B3.

Conditions préalables

Si ce n’est déjà fait, créez un compte et une instance Device Update et configurez un hub IoT.

Télécharger l’image

Nous fournissons des exemples d’images dans Assets sur la page des versions GitHub Device Update. Le fichier .gz est l’image de base que vous pouvez flasher sur une carte Raspberry Pi 3 B+. Le fichier swUpdate est la mise à jour que vous importez via Device Update pour IoT Hub.

Flasher une carte SD avec l’image

Utilisez votre outil de flashage de système d'exploitation favori pour installer l'image de base Device Update (adu-base-image) sur la carte SD qui sera utilisée dans le Raspberry Pi 3 B+.

Utiliser bmaptool pour flasher la carte SD

  1. Installez l’utilitaire bmaptool , si vous ne l’avez pas déjà fait.

    sudo apt-get install bmap-tools
    
  2. Localisez le chemin d’accès de la carte SD dans /dev. Le chemin doit ressembler à /dev/sd* ou /dev/mmcblk*. Vous pouvez recourir à l’utilitaire dmesg pour rechercher le chemin correct.

  3. Démontez toutes les partitions montées avant de flasher.

    sudo umount /dev/<device>
    
  4. Assurez-vous de disposer des autorisations d'écriture sur l’appareil.

    sudo chmod a+rw /dev/<device>
    
  5. Facultatif : pour un flashing plus rapide, téléchargez le fichier bimap et le fichier image et placez-les dans le même répertoire.

  6. Flashez la carte SD.

    sudo bmaptool copy <path to image> /dev/<device>
    

Le logiciel Device Update pour Azure IoT Hub est soumis aux termes du contrat de licence suivant :

Lisez les termes du contrat de licence avant d’utiliser l’agent. Votre installation et votre utilisation constituent votre acceptation de ces conditions. Si vous n’êtes pas d’accord avec les termes du contrat de licence, n’utilisez pas l’agent Device Update pour IoT Hub.

Créer un appareil ou un module dans IoT Hub et obtenir une chaîne de connexion

À présent, ajoutez l’appareil à IoT Hub. À partir d’IoT Hub, une chaîne de connexion est générée pour l’appareil.

  1. À partir du portail Azure, démarrez IoT Hub.

  2. Créez un nouvel appareil.

  3. Dans le volet gauche, sélectionnez Appareils. Ensuite, cliquez sur Nouveau.

  4. Sous ID de périphérique, entrez un nom pour l’appareil. Assurez-vous que la case Générer automatiquement les clés est cochée.

  5. Cliquez sur Enregistrer. Dans la page Appareils , l’appareil que vous avez créé doit figurer dans la liste.

  6. Obtenez la chaîne de connexion de l’appareil à l’aide de l’une des deux options suivantes :

    • Option 1 : Utilisez l’agent Device Update avec une identité de module : dans la même page Appareils , sélectionnez Ajouter une identité de module en haut. Créez un module Device Update avec le nom IoTHubDeviceUpdate. Choisissez d’autres options comme elles s’appliquent à votre cas d’usage, puis sélectionnez Enregistrer. Sélectionnez le module nouvellement créé. Dans l’affichage module, sélectionnez l’icône Copier en regard de la chaîne de connexion principale.
    • Option 2 : Utilisez l’agent Device Update avec l’identité de l’appareil : dans l’affichage de l’appareil, sélectionnez l’icône Copier en regard de la chaîne de connexion principale.
  7. Collez les caractères copiés quelque part pour une utilisation ultérieure dans les étapes suivantes :

    Cette chaîne copiée est votre chaîne de connexion d’appareil.

Préparer des configurations sur appareil pour Device Update pour IoT Hub

Deux fichiers de configuration doivent se trouver sur l’appareil afin que Device Update pour IoT Hub soit configuré correctement. Le premier fichier est le du-config.json fichier, qui doit exister à /adu/du-config.json. Le deuxième fichier est le du-diagnostics-config.json fichier, qui doit exister à /adu/du-diagnostics-config.json.

Voici deux exemples pour les fichiers du-config.json et du-diagnostics-config.json.

Exemple de du-config.json

   {
      "schemaVersion": "1.0",
      "aduShellTrustedUsers": [
         "adu",
         "do"
      ],
      "manufacturer": "fabrikam",
      "model": "vacuum",
      "agents": [
         {
         "name": "main",
         "runas": "adu",
         "connectionSource": {
            "connectionType": "string",
            "connectionData": "HostName=example-connection-string.azure-devices.net;DeviceId=example-device;SharedAccessKey=M5oK/rOP12aB5678YMWv5vFWHFGJFwE8YU6u0uTnrmU="
         },
         "manufacturer": "fabrikam",
         "model": "vacuum"
         }
      ]
   }  

Exemple de du-diagnostics-config.json

   {
      "logComponents":[
         {
               "componentName":"adu",
               "logPath":"/adu/logs/"
         },
         {
               "componentName":"do",
               "logPath":"/var/log/deliveryoptimization-agent/"
         }
      ],
      "maxKilobytesToUploadPerLogPath":50
   }

Configuration de l’agent Devise Update sur Raspberry Pi

  1. Assurez-vous que Raspberry Pi 3 est connecté au réseau.

  2. Suivez ces instructions pour ajouter les détails de configuration :

    1. Tout d’abord, SSH sur l’ordinateur à l’aide de la commande suivante dans la fenêtre PowerShell :

         ssh raspberrypi3 -l root
      
    2. Créez ou ouvrez le fichier du-config.json à modifier à l’aide de :

         nano /adu/du-config.json
      
    3. Après avoir exécuté la commande, vous devriez voir un éditeur ouvert avec le fichier. Si vous n’avez jamais créé le fichier, il sera vide. Copiez maintenant le contenu de l'exemple précédent du-config.json, et remplacez les configurations avec celles requises pour votre appareil. Remplacez ensuite l’exemple de chaîne de connexion par celle de l’appareil que vous avez créé dans les étapes précédentes.

    4. Une fois vos modifications terminées, sélectionnez Ctrl+X pour quitter l’éditeur. Entrez ensuite y pour enregistrer les modifications.

    5. Vous devez maintenant créer le du-diagnostics-config.json fichier à l’aide de commandes similaires. Commencez par créer ou ouvrir le du-diagnostics-config.json fichier pour modification à l’aide de :

         nano /adu/du-diagnostics-config.json
      
    6. Copiez l’exemple précédent du-diagnostics-config.json contenu et remplacez toutes les configurations qui diffèrent de la build par défaut. Le fichier d'exemple du-diagnostics-config.json représente les emplacements de journal par défaut pour le Device Update pour l'IoT Hub. Vous devez uniquement les modifier si votre implémentation diffère.

    7. Une fois vos modifications terminées, sélectionnez Ctrl+X pour quitter l’éditeur. Entrez ensuite y pour enregistrer les modifications.

    8. Utilisez la commande suivante pour afficher les fichiers situés dans le /adu/ répertoire. Vous devez voir les deux fichiers de configuration files.du-diagnostics-config.json pour modification à l’aide des éléments suivants :

         ls -la /adu/
      
  3. Redémarrez le démon système Device Update pour vous assurer que les configurations ont été appliquées. Utilisez la commande suivante dans le terminal connecté au raspberrypi:

       systemctl start adu-agent
    
  4. Vérifiez que l’agent est actif à l’aide de la commande suivante :

       systemctl status adu-agent
    

    Vous devriez voir que le statut revient comme opérationnel et vert.

Connecter l’appareil dans Device Update pour IoT Hub

  1. Dans le volet gauche, sélectionnez Appareils.

  2. Sélectionnez le lien avec le nom de votre appareil.

  3. En haut de la page, sélectionnez Jumeau d'appareil si vous vous connectez directement à Device Update en utilisant l'identité de l'appareil IoT. Sinon, sélectionnez le module que vous avez créé et sélectionnez son jumeau de module.

  4. Sous la section signalée des propriétés de jumeau d’appareil , recherchez la version du noyau Linux. Pour un nouvel appareil, qui n’a pas reçu de mise à jour de Device Update, la valeur DeviceManagement :DeviceInformation :1.swVersion représente la version du microprogramme en cours d’exécution sur l’appareil. Une fois qu’une mise à jour a été appliquée à un appareil, Device Update utilise la valeur de propriété AzureDeviceUpdateCore :ClientMetadata :4.installedUpdateId pour représenter la version du microprogramme en cours d’exécution sur l’appareil.

  5. Les fichiers image de base et de mise à jour ont un numéro de version dans le nom de fichier.

    adu-<image type>-image-<machine>-<version number>.<extension>
    

Utilisez ce numéro de version dans la section ultérieure « Importer la mise à jour ».

Ajouter une étiquette à votre appareil

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

  2. Dans le volet gauche, sous Appareils, recherchez votre appareil IoT et accédez au jumeau d’appareil ou au jumeau de module.

  3. Dans le jumeau de module du module d’agent Device Update, supprimez toutes les valeurs d’étiquette Device Update existantes en leur affectant la valeur Null. Si vous utilisez l’identité de l’appareil avec l’agent Device Update, apportez ces modifications sur le jumeau d’appareil.

  4. Ajoutez une nouvelle valeur d’étiquette Device Update comme indiqué ci-dessous :

        "tags": {
                "ADUGroup": "<CustomTagValue>"
                }
    

Importer la mise à jour

  1. Téléchargez l’exemple de manifeste de tutoriel (Tutoriel Import Manifest_Pi.json) et l’exemple de mise à jour (adu-update-image-raspberrypi3-0.6.5073.1.swu) à partir des ressources de publication pour la dernière version de l’agent.

  2. Connectez-vous au portail Azure et accédez à votre hub IoT avec Device Update. Dans le volet gauche, sous Gestion automatique des appareils, sélectionnez Mises à jour.

  3. Sélectionnez l’onglet Mises à jour.

  4. Sélectionnez + Importer une nouvelle mise à jour.

  5. Sélectionnez + Sélectionnez à partir du conteneur de stockage. Sélectionnez un compte existant ou créez-en un en utilisant + Compte de stockage. Sélectionnez ensuite un conteneur existant ou créez-en un en utilisant + Conteneur. Ce conteneur sera utilisé pour préparer vos fichiers de mise à jour pour l’importation.

    Remarque

    Nous vous recommandons d’utiliser un nouveau conteneur chaque fois que vous importez une mise à jour pour éviter d’importer accidentellement des fichiers à partir de mises à jour précédentes. Si vous n’utilisez pas un nouveau conteneur, veillez à supprimer tous les fichiers du conteneur existant avant de terminer cette étape.

    Capture d’écran illustrant Comptes de stockage et Conteneurs.

  6. Dans votre conteneur, sélectionnez Charger et accédez aux fichiers que vous avez téléchargés à l’étape 1. Une fois que vous avez sélectionné tous vos fichiers de mise à jour, sélectionnez Charger. Sélectionnez ensuite le bouton Sélectionner pour revenir à la page Importer la mise à jour.

    Capture d’écran illustrant la sélection de fichiers chargés.

    Cette capture d’écran montre l’étape d’importation. Les noms de fichiers peuvent ne pas correspondre à ceux utilisés dans l’exemple.

  7. Sur la page Importer la mise à jour, passez en revue les fichiers à importer. Sélectionnez ensuite Importer la mise à jour pour démarrer le processus d’importation.

    Capture d’écran montrant La mise à jour d’importation.

  8. Le processus d’importation commence et l’écran bascule vers la section Importer l’historique . Quand la colonne État indique que l’importation a réussi, sélectionnez l’en-tête Mises à jour disponibles. Vous devez maintenant voir votre mise à jour importée dans la liste.

    Capture d’écran illustrant l’état de travail.

En savoir plus sur l’importation des mises à jour.

Créer un groupe de mise à jour

  1. Accédez à l’onglet Groupes et déploiements en haut de la page.

    Capture d’écran illustrant des appareils dissociés.

  2. Sélectionnez puis choisissez l'option pour ajouter un nouveau groupe.

    Capture d’écran montrant l’ajout de groupe d’appareils.

  3. Sélectionnez une balise de ioT Hub et classe d’appareil dans la liste. Sélectionnez ensuite Créer un groupe.

    Capture d’écran montrant la sélection d’étiquettes.

  4. Une fois le groupe créé, le graphique de conformité de mise à jour et la liste des groupes sont mis à 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. En savoir plus sur la conformité des mises à jour.

    Capture d’écran illustrant l’affichage de conformité des mises à jour.

  5. Vous devez voir votre groupe nouvellement créé et toutes les mises à jour disponibles pour les appareils du nouveau groupe. S’il existe des appareils qui ne répondent pas aux exigences de classe d’appareil du groupe, ils s’affichent dans un groupe non valide correspondant. Pour déployer la meilleure mise à jour disponible sur le nouveau groupe défini par l’utilisateur à partir de cet affichage, sélectionnez Déployer à côté du groupe.

En savoir plus sur l’ajout de balises et la création de groupes de mises à jour.

Déployer la mise à jour

  1. Une fois le groupe créé, vous devez voir une nouvelle mise à jour disponible pour votre groupe d’appareils. Un lien vers la mise à jour doit être sous Meilleure mise à jour. Vous devrez peut-être actualiser une fois. En savoir plus sur la conformité des mises à jour.

  2. Sélectionnez le groupe cible en sélectionnant le nom du groupe. Vous êtes redirigé vers les détails du groupe sous Informations de base du groupe.

    Capture d’écran illustrant les détails du groupe.

  3. Pour démarrer le déploiement, accédez à l’onglet Déploiement actuel . Sélectionnez le lien de déploiement en regard de la mise à jour souhaitée dans la section Mises à jour disponibles . La meilleure mise à jour disponible pour un groupe donné est indiquée par la mention Optimale.

    Capture d’écran illustrant la sélection d’une mise à jour.

  4. Planifiez votre déploiement pour qu’il démarre immédiatement ou plus tard. Sélectionnez ensuite Créer.

    Capture d’écran montrant le bouton Créer.

  5. Sous Détails du déploiement, État devient Actif. La mise à jour déployée est marquée avec la mention (déploiement en cours).

    Capture d’écran montrant Le déploiement actif.

  6. Affichez le graphique de conformité pour voir que la mise à jour est maintenant en cours.

  7. Une fois votre appareil correctement mis à jour, vous voyez que votre graphique de conformité et les détails du déploiement sont mis à jour pour concorder.

    Capture d’écran montrant La mise à jour a réussi.

Surveiller le déploiement de la mise à jour

  1. Sélectionnez l’onglet Historique du déploiement en haut de la page.

    Capture d’écran illustrant Historique du déploiement.

  2. Sélectionnez Détails à côté du déploiement que vous avez créé.

    Capture d’écran illustrant Détails du déploiement.

  3. Sélectionnez Actualiser pour voir les détails d’état les plus récents.

Vous avez maintenant effectué une mise à jour d’image de bout en bout réussie à l’aide de Device Update pour IoT Hub sur un appareil Raspberry Pi 3 B+.

Nettoyer les ressources

Quand vous n’en avez plus besoin, nettoyez votre compte Device Update, votre instance, votre hub IoT et votre appareil IoT.

Étapes suivantes