Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
IoT Edge 1.5
Important
IoT Edge 1.5 LTS est la version prise en charge. IoT Edge 1.4 LTS est en fin de vie depuis le 12 novembre 2024. Si vous utilisez une version antérieure, consultez l’article Mettre à jour IoT Edge.
Utilisez Azure CLI pour créer un déploiement automatique Azure IoT Edge et gérer des déploiements pour de nombreux appareils à la fois. Les déploiements automatiques IoT Edge font partie de la fonctionnalité Gestion des appareils d’Azure IoT Hub. Les déploiements vous permettent de déployer plusieurs modules sur plusieurs appareils, de suivre l’état et l’intégrité des modules et d’apporter des modifications si nécessaire.
Dans cet article, vous configurez Azure CLI et l’extension IoT. Ensuite, vous déployez des modules sur un ensemble d’appareils IoT Edge et surveillez la progression à l’aide de commandes CLI.
Prérequis
Un hub IoT dans votre abonnement Azure.
Un ou plusieurs appareils IoT Edge.
Si vous n’avez aucun appareil IoT Edge configuré, vous pouvez en créer un sur une machine virtuelle Azure. Suivez la procédure décrite dans l’un de ces articles de démarrage rapide : Créer un appareil Linux virtuel ou Créer un appareil Windows virtuel.
Azure CLI dans votre environnement. Votre version d’Azure CLI doit être la version 2.0.70 ou ultérieure. Utilisez
az --versionpour vérifier. Cette version prend en charge les commandes d’extension az et introduit l’infrastructure de la commande Knack.
Configurer un manifeste de déploiement
Un manifeste de déploiement est un document JSON qui décrit les modules à déployer, la façon dont les données circulent entre les modules et les propriétés souhaitées des jumeaux de module. Pour plus d’informations, consultez Déployer des modules et établir des routes dans IoT Edge.
Pour déployer des modules en utilisant Azure CLI, enregistrez le manifeste de déploiement localement sous forme de fichier .txt. Vous allez utiliser le chemin du fichier dans la section suivante lorsque vous exécutez la commande pour appliquer la configuration à votre appareil.
Voici un manifeste de déploiement de base avec un module comme exemple.
{
"content": {
"modulesContent": {
"$edgeAgent": {
"properties.desired": {
"schemaVersion": "1.1",
"runtime": {
"type": "docker",
"settings": {
"minDockerVersion": "v1.25",
"loggingOptions": "",
"registryCredentials": {}
}
},
"systemModules": {
"edgeAgent": {
"type": "docker",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-agent:1.5",
"createOptions": "{}"
}
},
"edgeHub": {
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.5",
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
}
}
},
"modules": {
"SimulatedTemperatureSensor": {
"version": "1.5",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.5",
"createOptions": "{}"
}
}
}
}
},
"$edgeHub": {
"properties.desired": {
"schemaVersion": "1.1",
"routes": {
"upstream": "FROM /messages/* INTO $upstream"
},
"storeAndForwardConfiguration": {
"timeToLiveSecs": 7200
}
}
},
"SimulatedTemperatureSensor": {
"properties.desired": {
"SendData": true,
"SendInterval": 5
}
}
}
}
}
Remarque
Cet exemple de manifeste de déploiement utilise la version de schéma 1.1 pour l’agent et le hub IoT Edge. La version de schéma 1.1 est publiée avec IoT Edge version 1.0.10. Il vous permet d’utiliser des fonctionnalités telles que l’ordre de démarrage du module et la hiérarchisation des itinéraires.
Déploiement en couches
Les déploiements en couches sont un type de déploiement automatique que vous pouvez empiler les uns sur les autres. Pour plus d’informations sur les déploiements en couches, consultez Comprendre les déploiements automatiques IoT Edge pour un seul ou de nombreux appareils.
Vous pouvez créer et gérer des déploiements en couches avec Azure CLI comme n’importe quel déploiement automatique, avec quelques différences. Une fois que vous avez créé un déploiement en couches, Azure CLI fonctionne pour les déploiements en couches identiques à ceux de n’importe quel déploiement. Pour créer un déploiement en couches, ajoutez la balise --layered à la commande create.
La deuxième différence réside dans la façon dont vous construisez le manifeste de déploiement. Les déploiements automatiques standard doivent inclure les modules d’exécution du système et tous les modules utilisateur. Les déploiements en couches peuvent inclure uniquement des modules utilisateur. Les déploiements en couches impliquent également un déploiement automatique standard sur un appareil afin de fournir les composants requis de chaque appareil IoT Edge, comme les modules d’exécution du système.
Voici un manifeste de déploiement en couches de base avec un module comme exemple.
{
"content": {
"modulesContent": {
"$edgeAgent": {
"properties.desired.modules.SimulatedTemperatureSensor": {
"settings": {
"image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.5",
"createOptions": "{}"
},
"type": "docker",
"status": "running",
"restartPolicy": "always",
"version": "1.5"
}
},
"$edgeHub": {
"properties.desired.routes.upstream": "FROM /messages/* INTO $upstream"
},
"SimulatedTemperatureSensor": {
"properties.desired": {
"SendData": true,
"SendInterval": 5
}
}
}
}
}
Remarque
Ce manifeste de déploiement en couches diffère légèrement d’un manifeste de déploiement standard. Les propriétés souhaitées des modules d’exécution sont réduites et utilisent la notation par points. Cette mise en forme est requise pour que le portail Azure reconnaisse un déploiement en couches. Par exemple :
properties.desired.modules.<module_name>properties.desired.routes.<route_name>
L’exemple précédent montre le paramètre properties.desired de déploiement en couches d’un module. Si ce déploiement en couches cible un appareil où le même module est déjà appliqué, il remplace toutes les propriétés souhaitées existantes. Pour mettre à jour les propriétés souhaitées au lieu de les remplacer, définissez une nouvelle sous-section. Par exemple :
"SimulatedTemperatureSensor": {
"properties.desired.layeredProperties": {
"SendData": true,
"SendInterval": 5
}
}
Vous pouvez également exprimer la même syntaxe avec la syntaxe suivante :
"SimulatedTemperatureSensor": {
"properties.desired.layeredProperties.SendData" : true,
"properties.desired.layeredProperties.SendInterval": 5
}
Remarque
Actuellement, tous les déploiements en couches doivent inclure un edgeAgent objet pour être valide. Même si un déploiement en couches met uniquement à jour les propriétés du module, incluez un objet vide. Par exemple : "$edgeAgent":{}. Un déploiement en couches avec un objet edgeAgent vide apparaît comme ciblé dans le jumeau de module edgeAgent, et non appliqué.
Pour créer un déploiement en couches :
- Ajoutez l’indicateur
--layeredà la commande create d’Azure CLI. - N’incluez pas de modules système.
- Utilisez la notation par points complète sous
$edgeAgentet$edgeHub.
Pour plus d’informations sur la configuration de jumeaux de module au sein des déploiements en couches, consultez Déploiement en couches.
Identifier les appareils à l’aide de balises
Avant de créer un déploiement, vous devez spécifier les appareils que vous souhaitez affecter. Azure IoT Edge identifie les appareils en utilisant des balises dans le jumeau d’appareil.
Chaque appareil peut avoir plusieurs balises que vous pouvez définir comme bon vous semble pour votre solution. Par exemple, si vous gérez un campus de bâtiments intelligents, vous pouvez ajouter les balises suivantes à un appareil :
"tags":{
"location":{
"building": "20",
"floor": "2"
},
"roomtype": "conference",
"environment": "prod"
}
Pour plus d’informations sur les étiquettes et les jumeaux d’appareils, consultez Comprendre et utiliser les jumeaux d’appareil IoT Hub.
Créer un déploiement
Déployez des modules sur des appareils cibles en créant un déploiement avec le manifeste de déploiement et d’autres paramètres.
Exécutez la commande az iot edge deployment create pour créer un déploiement :
az iot edge deployment create --deployment-id <deployment-id> --hub-name <hub-name> --content <file-path> --labels "<labels>" --target-condition "<target-query>" --priority <priority>
Ajoutez l’indicateur --layered pour créer un déploiement en couches.
La az iot edge deployment create commande utilise les paramètres suivants :
- --layered : indicateur facultatif qui identifie le déploiement en tant que déploiement en couches.
-
--deployment-id : nom du déploiement créé dans le hub IoT. Utilisez un nom unique avec jusqu’à 128 lettres minuscules. Évitez les espaces et ces caractères non valides :
& ^ [ ] { } \ | " < > /. Ce paramètre est obligatoire. - --content : chemin d’accès du fichier au manifeste de déploiement JSON. Ce paramètre est obligatoire.
-
--hub-name : nom du hub IoT où le déploiement est créé. Le hub doit être dans l’abonnement actuel. Modifiez votre abonnement actuel en exécutant
az account set -s <subscription-name>. -
--labels : paires nom/valeur qui décrivent et vous aident à suivre les déploiements. Les étiquettes utilisent la mise en forme JSON pour les noms et les valeurs. Par exemple :
{"HostPlatform":"Linux", "Version":"3.0.1"}. -
--target-condition : condition qui détermine les appareils ciblés avec ce déploiement. La condition est basée sur les balises du jumeau d’appareil ou sur les propriétés signalées par le jumeau d’appareil, et elle doit correspondre au format de l’expression. Par exemple :
tags.environment='test' and properties.reported.devicemodel='4000x'. Si vous ne spécifiez pas la condition cible, le déploiement n’est appliqué à aucun appareil. - --priority : entier positif. Si deux déploiements ou plus ciblent le même appareil, le déploiement avec la priorité la plus élevée s’applique.
-
--metrics : Métriques qui interrogent les
edgeHubpropriétés signalées pour suivre l’état d’un déploiement. Les métriques utilisent une entrée JSON ou un chemin d’accès de fichier. Par exemple :'{"queries": {"mymetric": "SELECT deviceId FROM devices WHERE properties.reported.lastDesiredStatus.code = 200"}}'.
Pour surveiller un déploiement avec Azure CLI, consultez Surveiller les déploiements IoT Edge.
Remarque
Lorsque vous créez un déploiement IoT Edge, il peut prendre jusqu’à 5 minutes pour qu’IoT Hub traite la nouvelle configuration et envoie les nouvelles propriétés souhaitées aux appareils ciblés.
Modifier un déploiement
Lorsque vous modifiez un déploiement, les modifications sont immédiatement répliquées sur tous les appareils ciblés.
Si vous mettez à jour la condition cible, les modifications suivantes se produisent :
- Si un appareil ne répond pas à l’ancienne condition cible, mais répond à la nouvelle condition cible et que ce déploiement est la priorité la plus élevée pour cet appareil, ce déploiement est appliqué à l’appareil.
- Si un appareil qui exécute actuellement ce déploiement ne répond plus à la condition cible, il désinstalle ce déploiement et prend le déploiement de priorité la plus élevée suivante .
- Si un appareil qui exécute actuellement ce déploiement ne répond plus à la condition cible et ne répond pas à la condition cible d’un autre déploiement, aucune modification ne se produit sur l’appareil. L’appareil continue d’exécuter ses modules actuels dans leur état actuel, mais n’est plus géré dans le cadre de ce déploiement. Une fois que l’appareil répond à la condition cible d’un autre déploiement, il désinstalle ce déploiement et en prend le nouveau.
Vous ne pouvez pas mettre à jour le contenu d’un déploiement, qui comprend les modules et itinéraires définis dans le manifeste de déploiement. Pour mettre à jour le contenu d’un déploiement, créez un déploiement qui cible les mêmes appareils avec une priorité plus élevée. Vous pouvez modifier certaines propriétés d’un module existant, y compris la condition, les étiquettes, les métriques et la priorité de la cible.
Utilisez la commande az iot edge deployment update pour mettre à jour un déploiement :
az iot edge deployment update --deployment-id <deployment-id> --hub-name <hub-name> --set <property1.property2='value'>
La commande de mise à jour de déploiement utilise les paramètres suivants :
- --deployment-id : nom du déploiement dans le hub IoT.
-
--hub-name : nom du hub IoT où se trouve le déploiement. Le hub doit être dans l’abonnement actuel. Pour basculer vers un autre abonnement, exécutez
az account set -s <subscription-name>. -
--set : Modifier une propriété dans le déploiement. Vous pouvez modifier les propriétés suivantes :
-
targetCondition(par exemple,targetCondition=tags.location.state='Oregon') labelspriority
-
- --add : Ajoutez une nouvelle propriété au déploiement, y compris des conditions cibles ou des étiquettes.
- --remove : supprimez une propriété existante, y compris les conditions cibles ou les étiquettes.
Supprimer un déploiement
Lorsque vous supprimez un déploiement, les appareils utilisent leur prochain déploiement de priorité la plus élevée. Si les appareils ne répondent pas à la condition cible d’un autre déploiement, les modules ne sont pas supprimés lorsque vous supprimez le déploiement.
Exécutez la commande az iot edge deployment delete pour supprimer un déploiement :
az iot edge deployment delete --deployment-id <deployment-id> --hub-name <hub-name>
La deployment delete commande utilise les paramètres suivants :
- --deployment-id. Nom du déploiement qui existe dans le hub IoT.
-
--hub-name. Nom du hub IoT dans lequel le déploiement existe. Le hub doit être dans l’abonnement actuel. Pour basculer sur l’abonnement souhaité, utilisez la commande
az account set -s [subscription name].
Étapes suivantes
En savoir plus sur le déploiement des modules sur des appareils IoT Edge.