Starten oder Herunterfahren von Geräten mit Azure IoT und OSConfig
Artikel
Wichtig
Version 1.0.3 (veröffentlicht am 28. Juni 2022) umfasst die Unterbrechung von Änderungen an Membernamen, die sich auf vorhandene Benutzer auswirken können. Weitere Informationen finden Sie unter: Membernamen Übergang von PascalCase zu CamelCase in Version 1.0.3
Zielgruppe und Bereich
Dieser Artikel soll Personen unterstützen, die Geräte mit Azure IoT bereitstellen oder verwalten . Wenn dies nicht wie Sie klingt, sollten Sie sich die Zielgruppe für die OSConfig-Dokumentation ansehen.
In diesem Artikel wird erläutert, wie Sie Geräte mit dem CommandRunner-Feature von OSConfig neu starten oder herunterfahren. Dieser Artikel konzentriert sich auf praktische Beispiele mit minimaler Erläuterung. Technische Hintergründe im CommandRunner-Feature , das Interaktionsmodell usw. finden Sie unter "Interagieren" mit dem CommandRunner-Feature von OSConfig und Azure IoT.
Beispiele für Anwendungsfälle
Voraussetzungen zum Testen der Beispiele für Live-Systeme
Wenn Sie diesen Artikel für Referenz verwenden (z. B. hier, um einen Eigenschaftennamen zu kopieren), gibt es keine Voraussetzungen.
Wenn Sie die Beispiele für Livesysteme (empfohlen) ausprobieren möchten, dann:
Sie benötigen ein Azure-Konto mit einem IoT Hub
In diesem Artikel wird davon ausgegangen, dass IoT Hub und verwandte Tools vertraut sind. Es wird z. B. davon ausgegangen, dass Sie IoT Hubs und Anfügen von Geräten bequem erstellen. Wenn Sie eine schrittweisere Einführung in die Installation und Verwendung von OSConfig von Grund auf bevorzugen, lesen Sie: Schnellstart: Verwalten eines einzelnen virtuellen IoT-Geräts mithilfe von Azure CLI stattdessen.
Sie benötigen mindestens ein Linux-Gerät mit dem OSConfig-Agent, der installiert und mit Azure IoT verbunden ist.
Stellen Sie sicher, dass Sie beim Azure-Portal angemeldet sind und auf die Übersichtsseite Ihres IoT Hub zugreifen können anzeigt.
Melden Sie sich beim Azure-Portal mit dem Konto an, das Sie verwenden möchten
Starten von Azure Cloud Shell im Bashmodus
(optional) Verwenden Sie den Befehl az account show , um sicherzustellen, dass Sie im Kontext angemeldet sind, den Sie für die Beispiele verwenden möchten.
Beispiel A. Starten Sie ein oder mehrere Geräte neu
Für die einzelnen Gerätebeispiele können Sie die Neustartrichtlinie direkt dem OSConfig-Twin des Geräts hinzufügen, das Sie neu starten möchten.
In den Beispielen im Maßstab stellen wir uns vor, mit einem externen Prozess zu arbeiten, der Tags zu Geräten hinzufügt und entfernt needsReboot . Wir erstellen eine IoT Hub Konfiguration, die dynamisch auf Geräte abzielt, auf die das needsReboot Tag im osconfig-Twin festgelegt ist. Wir simulieren diesen externen Prozess, indem wir das Tag explizit festlegen.
Navigieren Sie auf der Portalseite Ihres IoT Hub zum OSConfig-Twin für das Gerät, das Sie verwalten möchten, und fügen Sie dem properties.desired Abschnitt gefolgt von einem Komma ein Komma hinzu, um sie vom nächsten Element zu properties.desiredtrennen. action=1 unten gibt den Neustart an.
Optional: Sobald das Gerät online ist (dies dauert einige Minuten), können Sie den properties.reported Abschnitt überprüfen und nach dem BefehlStatus suchen, der die Neustartaktion erfolgreich anzeigt, wie unten gezeigt.
1.Optional: Sie können sich auch auf Ihrem Gerät oder vm anmelden, um zu überprüfen, nachdem das Gerät neu gestartet wurde.
Zunächst simulieren wir den oben beschriebenen außen beschriebenen Prozess, indem wir manuell ein "needsReboot"-Tag auf eine oder mehrere Geräte Ihrer Wahl anwenden. Dadurch werden Zielkriterien für den IoT Hub Konfigurationsauftrag bereitgestellt (der in einem späteren Schritt erstellt wird). Navigieren Sie dazu zur Azure IoT Hub Seite des Geräts im Portal, zum OSConfig-Modul-Twin, und fügen Sie den folgenden Abschnitt vor dem properties Abschnitt des Zwillings hinzu.
{
{"tags": {"needsReboot": "true"}}
}
Wählen Sie auf der Portalseite Ihres Azure IoT Hub Geräteverwaltung --Konfigurationen -->Modulkonfigurationen -->Modulkonfigurationen hinzufügen.
Geben Sie einen Namen an, und legen Sie die Twin-Einstellungen mit der gewünschten Paket-Manager-Konfiguration fest. Legen Sie die Module Twin-Eigenschaft auf und legen Sie den Inhalt der Module Twin-Eigenschaft auf properties.desired.CommandRunner folgendes fest:
Geben Sie für die Zielmodule die Kriterien an, für die Geräte im Bereich sind. In diesem Beispiel zielen wir auf alle OSConfig-aktivierten Geräte ab, die über die angegebenen TaganforderungenReboot verfügen, indem sie eine Zielbedingung angeben. FROM devices.modules where moduleId='osconfig' AND tags.needsReboot = 'true'
Optional: Um zu beobachten, welche Zwillinge von Geräten aktualisiert wurden (Cloudseite), lesen Sie die Angewendete Metrik (auch als appliedCount bezeichnet)
Optional: Sie können die Geräte beobachten, die erfolgreich mit IoT Hub Abfragen neu gestartet wurden. Navigieren Sie zu Geräteverwaltung -->Abfragen, und führen Sie die folgende Abfrage aus.
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
Beachten Sie , dass es einige Verzögerung (~5-10 Minuten) für den CommandStatus gibt, um aktualisiert zu werden, da das Gerät den Neustartzyklus abschließen und online zurückkehren muss.
Optional: Für Entwicklungs- und Debugzwecke können Sie überprüfen, ob ConnectionState für OSConfig-Modul (oder ein anderes Modul) als verbunden angezeigt wird. Navigieren Sie dazu zu Geräteverwaltung -->Abfragen, und führen Sie die Abfrage SELECT deviceId, connectionState FROM devices.modules where moduleId = 'osconfig'aus.
Weitere Informationen finden Sie unter "DeviceHeartbeat".
Optional: Informationen zum Überwachen von Geräteverbindungs- und Trennungsereignissen in der Produktion finden Sie unter : MonitorConnectandDisconnect.
Verwenden Sie den folgenden Beispielbefehl, um ein einzelnes Gerät neu zu starten, indem Sie den Twin des OSConfig-Moduls aktualisieren, die Geräte-ID> und/oder den Hubnamen ersetzen<, um Ihrer Umgebung zu entsprechen.><
Optional: Um zu überprüfen, ob das Gerät erfolgreich mit IoT Hub Abfragen neu gestartet wurde, navigieren Sie zu Geräteverwaltung -->Abfragen, und führen Sie die folgende Abfrage aus. Beachten Sie, dass für den gemeldeten CommandStatus einige Verzögerung (~5-10 Minuten) vorhanden ist, um aktualisiert zu werden, da das Gerät den Neustartzyklus abschließen und online zurückkehren muss.
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
Optional: Sie können sich auch bei Ihrem Gerät oder ihrer VM anmelden, um zu überprüfen, nachdem das Gerät neu gestartet wurde.
Zunächst simulieren wir den oben beschriebenen außen beschriebenen Prozess, indem wir manuell ein "needsReboot"-Tag auf eine oder mehrere Geräte Ihrer Wahl anwenden. Dadurch werden Zielkriterien für den IoT Hub Konfigurationsauftrag bereitgestellt (der in einem späteren Schritt erstellt wird).
Verwenden Sie den folgenden Beispielbefehl, um eine IoT Hub Konfiguration zu erstellen. Diese Konfiguration umfasst Zielkriterien, die gewünschte Konfiguration. Achten Sie darauf, den Hubnamen durch Ihren IoT Hub Namen> zu ersetzen<.
Führen Sie den folgenden Befehl aus, um zu sehen, welche Geräte die Neustartrichtlinie auf diese Konfiguration angewendet haben. Es kann bis zu 5 Minuten dauern, nachdem die Konfiguration erstellt wurde, bevor sie auf gezielte Zwillinge angewendet wird.
az iot hub configuration show-metric --metric-id appliedCount -c "reboot_devices_by_tag" \
-n <hub name> --metric-type system
Optional: Für Entwicklungs- und Debugzwecke können Sie überprüfen, ob ConnectionState für OSConfig-Modul (oder ein anderes Modul) als verbunden angezeigt wird. Navigieren Sie dazu zu Geräteverwaltung -->Abfragen, und führen Sie die Abfrage SELECT deviceId, connectionState FROM devices.modules where moduleId = 'osconfig'aus.
Weitere Informationen finden Sie unter "DeviceHeartbeat".
Optional: Um Geräteverbindungen zu überwachen und Ereignisse in der Produktion zu trennen, lesen Sie diese Dokumentation, MonitorConnectandDisconnect.
Beispiel B. Herunterfahren anstelle des Neustarts
Das Remote-Herunterfahren von Edge-/IoT-Geräten (im Gegensatz zum Neustarten) ist ein weniger gängiger Vorgang, da das Gerät später nicht verfügbar ist (auf eine außerhalb der Band-Möglichkeit, es wieder zu starten). Selbst dann gibt es reale Fälle, die remote heruntergefahren werden. Stellen Sie sich ein Problemgerät vor, das beschädigte Daten sendet, überlastet satellitenübertragungsbytes, wird als kompromittiert angenommen oder sonst mehr Schaden als gut. In solchen Fällen kann es wünschenswert sein, das Gerät herunterzufahren, bis es ersetzt oder repariert werden kann.
Zum Ausführen des Herunterfahrens von Geräten über OSConfig können Sie dieselben Cloudworkflows wie Beispiel A verwenden, aber "action": 2 nicht (herunterfahren) als "action": 1 (Neustart) in commandArguments. Bitte beachten Sie, dass jede Anforderung in CommandRunner einen neuen CommandId-Wert benötigt. Wenn Sie beispielsweise bereits einen Neustart in Beispiel A ausgeführt haben und jetzt zum Herunterfahren wechseln möchten, müssen Sie CommandArguments nicht nur "action": 2 mit, sondern auch mit einem nicht zuvor verwendeten Wert für commandId ändern, z "commandId": "my_shutdown_cmd". B. . Weitere Informationen zum CommandRunner-Interaktionsmodell finden Sie unter: Interagieren mit dem CommandRunner-Feature von OSConfig und Azure IoT.
Nächste Schritte
Eine Übersicht über OSConfig-Szenarien und -Funktionen finden Sie unter: