Partager via


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.

  1. Dans le Portail Azure, ouvrez la page de hub IoT associée à votre instance Device Update.
  2. Dans le volet de navigation gauche, sélectionnez Gestion des appareils>Appareils.
  3. Sur la page Appareils, sélectionnez Ajouter un appareil.
  4. 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.
  5. Cliquez sur Enregistrer. L’appareil figure dans la liste de la page Appareils.
  6. Sur la page Appareils, sélectionnez l’appareil que vous avez inscrit.
  7. 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é.

  1. Installez l’utilitaire bmap-tools si vous ne le possédez pas.

    sudo apt-get install bmap-tools
    
  2. 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.

  3. Démontez toutes les partitions montées avant l’effectuer le flashage.

    sudo umount /dev/<device>
    
  4. Veillez à disposer des autorisations d’accès en écriture sur l’appareil.

    sudo chmod a+rw /dev/<device>
    
  5. 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

  1. Vérifiez que l’appareil Raspberry Pi est connecté au réseau.

  2. 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.

  1. Pour créer le fichier du-config.json ou l’ouvrir pour modification, exécutez la commande suivante :

    nano /adu/du-config.json
    
  2. 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"
          }
       ]
    }  
    
  3. Appuyez sur Ctrl+X pour quitter l’éditeur, puis entrez y pour enregistrer vos modifications.

  4. 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
    
  5. 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
    }
    
  6. Appuyez sur Ctrl+X pour quitter l’éditeur, puis entrez y pour enregistrer vos modifications.

  7. 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/
    
  8. 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
    
  9. 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

  1. 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.

  2. Sur la page Appareils, sélectionnez le nom de votre appareil.

  3. Dans la partie supérieure de la page de l’appareil, sélectionnez Jumeau d’appareil.

  4. 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.

  1. 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.

    Capture d’écran représentant un jumeau numérique avec des informations sur les étiquettes.

  2. Cliquez sur Enregistrer.

Importer la mise à jour

  1. 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.

  2. Sur la page Mises à jour, sélectionnez Importer une nouvelle mise à jour.

  3. Sur la page Importer une mise à jour, sélectionnez Sélectionner dans le conteneur de stockage.

  4. Sur la page Comptes de stockage, sélectionnez un compte de stockage existant ou créez-en un en sélectionnant Compte de stockage.

  5. 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.

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

    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.

  6. 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
  7. Sélectionnez Charger. Une fois chargés, les fichiers s’affichent sur la page du conteneur.

  8. Sur la page du conteneur, passez en revue les fichiers à importer, sélectionnez-les, puis choisissez Sélectionner.

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

  9. Sur l’écran Importer la mise à jour, sélectionnez Importer la mise à jour.

    Capture d’écran illustrant 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.

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

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.

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

Déployer la mise à jour

  1. 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.

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

  2. 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.

    Capture d’écran de la création d’un déploiement.

    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.

  3. 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).

    Capture d’écran montrant le déploiement comme Actif.

  4. 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.

    Capture d’écran illustrant la mise à jour réussie.

Afficher l’historique des déploiements de mises à jour

Pour afficher l’historique des déploiements :

  1. 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éé.

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

  2. Sur la page Détails du déploiement, sélectionnez Actualiser pour afficher les dernières informations d’état.

    Capture d’écran des détails du déploiement.

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.

  1. Dans le Portail Azure, accédez au groupe de ressources qui contient les ressources.
  2. Si vous voulez supprimer toutes les ressources dans le groupe, sélectionnez Supprimer le groupe de ressources.
  3. Si vous souhaitez supprimer seulement certaines ressources, utilisez les cases à cocher pour sélectionner les ressources en question, puis sélectionnez Supprimer.

Étapes suivantes