Cet article est conçu pour prendre en charge les personnes qui approvisionnent ou gèrent des appareils avec Azure IoT. Si cela ne vous ressemble pas, examinez la documentation Audiences pour OSConfig.
Cet article explique comment redémarrer ou arrêter des appareils à l’aide de la fonctionnalité CommandRunner d’OSConfig. Cet article se concentre sur des exemples pratiques avec une explication minimale. Pour plus d’informations techniques sur la fonctionnalité CommandRunner , le modèle d’interaction, etc. consultez Comment interagir avec la fonctionnalité CommandRunner de OSConfig et d’Azure IoT.
Exemples de cas d’usage
Conditions préalables pour essayer les exemples sur les systèmes en direct
Si vous utilisez cet article pour référence (par exemple, vous êtes ici pour copier un nom de propriété), il n’existe aucune condition préalable.
Si vous souhaitez essayer les exemples sur les systèmes en direct (recommandé), alors :
Vous aurez besoin d’un compte Azure avec un IoT Hub
Cet article suppose une certaine connaissance des IoT Hub et des outils connexes. Par exemple, il suppose que vous êtes à l’aise avec la création d’IoT Hubs et l’attachement d’appareils. Si vous préférez une présentation pas à pas plus prescriptive de l’installation et de l’utilisation de OSConfig à partir de zéro, consultez : Démarrage rapide : Gérer un seul appareil IoT virtuel à l’aide d’Azure CLI à la place.
Vous aurez besoin d’au moins un appareil Linux avec l’agent OSConfig installé et connecté à Azure IoT.
Vérifiez que vous êtes connecté au portail Azure et que vous pouvez accéder à la page vue
Connectez-vous au portail Azure avec le compte que vous souhaitez utiliser
Lancer Azure Cloud Shell en mode bash
(facultatif) Utilisez la commande az account show pour vous assurer que vous êtes connecté au contexte que vous souhaitez utiliser pour les exemples.
Exemple A. Redémarrer un ou plusieurs appareils
Pour les exemples d’appareils uniques, vous pouvez ajouter la directive de redémarrage directement au jumeau OSConfig de l’appareil que vous souhaitez redémarrer.
Pour les exemples à grande échelle, nous imaginons travailler avec un processus externe qui ajoute et supprime des needsReboot balises sur les appareils. Nous allons créer une configuration IoT Hub qui cible dynamiquement les appareils sur lesquels la needsReboot balise est définie dans le jumeau osconfig. Nous allons simuler ce processus externe en définissant explicitement la balise.
Dans la page du portail de votre IoT Hub, accédez au jumeau OSConfig de l’appareil que vous souhaitez gérer, puis ajoutez ce qui suit à la properties.desired section, suivi d’une virgule pour la séparer de l’élément suivant dans properties.desired. action=1 ci-dessous spécifie le redémarrage.
Optionnel: Une fois que l’appareil est de nouveau en ligne (cela prend quelques minutes), vous pouvez vérifier la section et rechercher la properties.reportedcommandeStatus qui affichera l’action de redémarrage terminée avec succès, comme indiqué ci-dessous.
1.Facultatif : vous pouvez également vous connecter à votre appareil ou machine virtuelle pour valider une fois l’appareil redémarré.
Tout d’abord, nous allons simuler le processus externe décrit ci-dessus en appliquant manuellement une balise « needsReboot » à un ou plusieurs appareils de votre choix. Cela fournira des critères de ciblage pour le travail de configuration IoT Hub (qui sera créé dans une étape ultérieure). Pour ce faire, accédez à la page Azure IoT Hub de l’appareil dans le portail, au jumeau de module OSConfig, puis ajoutez ce qui suit avant la properties section du jumeau.
{
{"tags": {"needsReboot": "true"}}
}
Dans la page du portail de votre Azure IoT Hub, choisissez Gestion des appareils -->Configurations -->Ajouter une configuration de module.
Spécifiez un nom et définissez les paramètres du jumeau avec la configuration du gestionnaire de package souhaitée. Définissez la propriété properties.desired.CommandRunnerde jumeau de module sur et définissez le contenu de propriété de jumeau de module sur ce qui suit :
Pour les modules cibles, spécifiez les critères pour lesquels les appareils sont dans l’étendue. Dans cet exemple, nous allons cibler tous les appareils compatibles OSConfig qui ont la balise spécifiée needsReboot, en spécifiant une condition cible de FROM devices.modules where moduleId='osconfig' AND tags.needsReboot = 'true'
Optionnel: Pour observer les jumeaux des appareils mis à jour (côté cloud), consultez la métrique Appliquée (également appelée appliedCount)
Optionnel: Vous pouvez observer les appareils qui ont redémarré avec succès à l’aide de requêtes IoT Hub. Accédez à Gestion des appareils -->Requêtes et exécutez la requête suivante.
SELECT deviceId from devices.modules where moduleId='osconfig'
AND tags.needsReboot = 'true'
AND properties.reported.CommandRunner.CommandStatus.CommandId = 'reboot_devices_by_tag'
AND properties.reported.CommandRunner.CommandStatus.ResultCode = 0
Notez qu’il y aura un certain délai (environ 5 à 10 minutes) pour que commandStatus soit mis à jour, car cela oblige l’appareil à terminer le cycle de redémarrage et à revenir en ligne.
Optionnel: À des fins de développement et de débogage, vous pouvez vérifier si connectionState pour le module OSConfig (ou tout autre module) s’affiche comme connecté. Pour cela, accédez à Gestion des appareils -->Requêtes et exécutez la requêteSELECT deviceId, connectionState FROM devices.modules where moduleId = 'osconfig'.
Pour plus d’informations, consultez : DeviceHeartbeat.
Optionnel: Pour surveiller les événements de connexion et de déconnexion des appareils en production, consultez : MonitorConnectandDisconnect.
Utilisez l’exemple de commande suivant pour redémarrer un seul appareil en mettant à jour le jumeau de module OSConfig, en <remplaçant l’ID> de l’appareil et/ou le <nom> du hub pour qu’il corresponde à votre environnement.
Optionnel: Pour vérifier que le ou les appareils ont redémarré correctement à l’aide de requêtes IoT Hub, accédez à Gestion des appareils -->Requêtes et exécutez la requête suivante. Notez qu’il y aura un certain délai (environ 5 à 10 minutes) pour que commandStatus signalé soit mis à jour, car cela oblige l’appareil à terminer le cycle de redémarrage et à revenir en ligne.
SELECT deviceId from devices.modules where moduleId='osconfig'
AND properties.reported.CommandRunner.CommandStatus.CommandId = 'reboot_single_device_cmd'
AND properties.reported.CommandRunner.CommandStatus.ResultCode = 0
Optionnel: Vous pouvez également vous connecter à votre appareil ou machine virtuelle pour valider une fois l’appareil redémarré.
Tout d’abord, nous allons simuler le processus externe décrit ci-dessus en appliquant manuellement une balise « needsReboot » à un ou plusieurs appareils de votre choix. Cela fournira des critères de ciblage pour le travail de configuration IoT Hub (qui sera créé dans une étape ultérieure).
Utilisez l’exemple de commande suivant pour créer une configuration IoT Hub. Cette configuration inclut les critères de ciblage, la configuration souhaitée. Veillez à remplacer <le nom> du hub par le nom de votre IoT Hub.
Pour voir les appareils auxquels la directive de redémarrage est appliquée par cette configuration, exécutez la commande suivante. La création de la configuration peut prendre jusqu’à 5 minutes avant d’être appliquée aux jumeaux ciblés.
az iot hub configuration show-metric --metric-id appliedCount -c "reboot_devices_by_tag" \
-n <hub name> --metric-type system
Optionnel: À des fins de développement et de débogage, vous pouvez vérifier si connectionState pour le module OSConfig (ou tout autre module) s’affiche comme connecté. Pour cela, accédez à Gestion des appareils -->Requêtes et exécutez la requêteSELECT deviceId, connectionState FROM devices.modules where moduleId = 'osconfig'.
Pour plus d’informations, consultez : DeviceHeartbeat.
Optionnel: Pour surveiller les événements de connexion et de déconnexion des appareils en production, reportez-vous à cette documentation, MonitorConnectandDisconnect.
Exemple B. Arrêt au lieu du redémarrage
L’arrêt à distance (par opposition au redémarrage) des appareils Edge/IoT est une opération moins courante, car l’appareil n’est plus disponible (ce qui empêche un moyen hors bande de le redémarrer). Même si, il existe des cas réels qui appellent à l’arrêt à distance. Imaginez un appareil problématique qui envoie des données endommagées, consomme trop d’octets de transmission satellite précieux, est considéré comme compromis ou est autrement plus dangereux que bon. Dans ce cas, il peut être souhaitable d’arrêter l’appareil jusqu’à ce qu’il puisse être remplacé ou réparé.
Pour effectuer l’arrêt des appareils via OSConfig, vous pouvez utiliser les mêmes flux de travail cloud que l’exemple A, mais en utilisant "action": 2 (arrêt) plutôt que "action": 1 (redémarrage) dans commandArguments. N’oubliez pas que chaque requête dans CommandRunner a besoin d’une nouvelle valeur commandId. Par exemple, si vous avez déjà effectué un redémarrage dans l’exemple A et que vous souhaitez maintenant basculer vers l’arrêt, vous devez modifier commandArguments non seulement avec "action": 2 , mais également avec une valeur non utilisée précédemment pour commandId, par exemple "commandId": "my_shutdown_cmd". Pour plus d’informations sur le modèle d’interaction CommandRunner, consultez : Comment interagir avec la fonctionnalité CommandRunner de OSConfig et d’Azure IoT.
Étapes suivantes
Pour obtenir une vue d’ensemble des scénarios et fonctionnalités OSConfig, consultez :