Grundlegendes zu automatischen IoT Edge-Bereitstellungen für einzelne Geräte oder nach Bedarf

Gilt für:IoT Edge 1.4 checkmark IoT Edge 1.4

Wichtig

IoT Edge Version 1.4 wird unterstützt. Wenn Sie ein früheres Release verwenden, finden Sie weitere Informationen unter Aktualisieren von IoT Edge.

Mithilfe von automatischen Bereitstellungen und einer mehrstufigen Bereitstellung können Sie Module auf einer großen Anzahl von IoT Edge Geräten verwalten und konfigurieren.

Azure IoT Edge bietet zwei Möglichkeiten zum Konfigurieren der Module, die auf IoT Edge Geräten ausgeführt werden sollen. Die erste Methode ist die Bereitstellung von Modulen pro Gerät. Sie erstellen ein Bereitstellungsmanifest und wenden es dann auf ein bestimmtes Gerät nach Name an. Die zweite Methode ist die automatische Bereitstellung auf einem beliebigen registrierten Gerät, das eine Reihe von definierten Bedingungen erfüllt. Sie erstellen ein Bereitstellungsmanifest und definieren dann, auf welche Geräte es angewendet werden soll, basierend auf Tags im Gerätezwilling.

Sie können keine gerätespezifischen und automatischen Bereitstellungen kombinieren. Sobald Sie damit beginnen, auf IoT Edge-Geräte mit automatischen Bereitstellungen (mit oder ohne mehrstufige Bereitstellungen) abzuzielen, werden gerätespezifische Bereitstellungen nicht mehr unterstützt.

Der Schwerpunkt dieses Artikels liegt auf dem Konfigurieren und Überwachen von größeren Gerätebeständen, die zusammen als automatische IoT Edge-Bereitstellungen bezeichnet werden.

Die grundlegenden Schritte zur Bereitstellung lauten wie folgt:

  1. Ein Operator definiert ein Bereitstellungsmanifest, das eine Gruppe von Modulen und die Zielgeräte beschreibt.
  2. Daher kommuniziert der IoT Hub-Dienst mit allen zielbezogenen Geräten, um sie mit den deklarierten Modulen zu konfigurieren.
  3. Der IoT Hub-Dienst ruft den Status von den IoT Edge-Geräten ab und macht diese für den Operator verfügbar. Beispielsweise kann ein Bediener sehen, wenn ein Edge-Gerät nicht erfolgreich konfiguriert wurde oder wenn bei einem Modul während der Laufzeit ein Fehler auftritt.
  4. Wenn neu gezielte IoT Edge-Geräte online sind und eine Verbindung mit IoT Hub herstellen, werden sie für die Bereitstellung konfiguriert.

In diesem Artikel werden die einzelnen Komponenten beschrieben, die beim Konfigurieren und Überwachen einer Bereitstellung verwendet werden. Eine exemplarische Vorgehensweise zum Erstellen und Aktualisieren einer Bereitstellung finden Sie unter Bedarfsabhängiges Bereitstellen und Überwachen von IoT Edge-Modulen.

Bereitstellung

Bei einer automatischen IoT Edge-Bereitstellung werden IoT Edge-Modulimages zugewiesen, die als Instanzen auf einem bestimmten Satz von IoT Edge-Geräten ausgeführt werden. Die automatisierte Bereitstellung konfiguriert ein IoT Edge-Bereitstellungsmanifest, um eine Liste von Modulen mit den entsprechenden Initialisierungsparametern einzuschließen. Eine Bereitstellung kann einem einzelnen Gerät (basierend auf der Geräte-ID) oder einer Gruppe von Geräten (basierend auf Tags) zugewiesen werden. Nachdem ein IoT Edge-Gerät ein Bereitstellungsmanifest erhalten hat, lädt es die Containerimages aus den entsprechenden Containerrepositorys herunter, installiert und konfiguriert sie. Sobald eine Bereitstellung erstellt wurde, kann der Operator den Bereitstellungsstatus überwachen und so erkennen, ob die Zielgeräte ordnungsgemäß konfiguriert wurden.

Nur IoT Edge-Geräte können mit einer Bereitstellung konfiguriert werden. Auf dem Gerät muss Folgendes vorhanden sein, um die Bereitstellung zu ermöglichen:

  • Das Basisbetriebssystem
  • Ein Containerverwaltungssystem (beispielsweise Moby oder Docker)
  • Bereitstellung der IoT Edge-Laufzeit

Bereitstellungsmanifest

Ein Bereitstellungsmanifest ist ein JSON-Dokument, in dem die Module beschrieben werden, die auf den IoT Edge-Zielgeräten konfiguriert werden sollen. Es enthält die Konfigurationsmetadaten für alle Module, einschließlich der erforderlichen Systemmodule (insbesondere IoT Edge-Agent und IoT Edge-Hub).

Die Konfigurationsmetadaten für jedes Modul enthalten Folgendes:

  • Version
  • Typ
  • Status (z. B. Wird ausgeführt oder beendet)
  • Neustartrichtlinie
  • Image- und Containerregistrierung
  • Routen für Dateneingabe und -ausgabe

Wenn das Modulimage in einer privaten Containerregistrierung gespeichert ist, befinden sich die Anmeldeinformationen für die Registrierung im IoT Edge-Agent.

Zielbedingung

Die Zielgerätebedingung wird während der gesamten Lebensdauer der Bereitstellung kontinuierlich ausgewertet. Alle neuen Geräte, die die Anforderungen erfüllen, sind enthalten, und alle vorhandenen Geräte, die die Anforderungen nicht mehr erfüllen, werden entfernt. Die Bereitstellung wird reaktiviert, wenn der Dienst Änderungen an der Zielbedingung feststellt.

Beispielsweise verfügen Sie über eine Bereitstellung mit einer Zielbedingung tags.environment = 'prod'. Wenn Sie die Bereitstellung initiieren, gibt es 10 Produktionsgeräte. Die Module werden erfolgreich auf diesen 10 Geräten installiert. Im Status des IoT Edge-Agents werden insgesamt 10 Geräte, 10 erfolgreiche Antworten, 0 Fehlerantworten und 0 ausstehende Antworten angezeigt. Jetzt fügen Sie fünf weitere Geräte mit tags.environment = 'prod'. Der Dienst erkennt die Änderung und der IoT Edge-Agentstatus zeigt jetzt 15 Gesamtgeräte, 10 erfolgreiche Antworten, 0 Fehlerantworten und 5 ausstehende Antworten an, während er auf den fünf neuen Geräten bereitgestellt wird.

Wenn eine Bereitstellung keine Zielbedingung aufweist, wird sie auf keine Geräte angewendet.

Verwenden Sie eine beliebige boolesche Bedingung bei Gerätezwillingstags, vom Gerätezwilling gemeldeten Eigenschaften oder für „deviceId“, um die Zielgeräte auszuwählen. Wenn Sie eine Bedingung mit Tags verwenden möchten, müssen Sie einen "tags":{} Abschnitt im Geräte-Twin unter der gleichen Ebene wie Eigenschaften hinzufügen. Weitere Informationen zu Tags in einem Geräte-Twin finden Sie unter "Grundlegendes und Verwenden von Geräte twins" in IoT Hub. Weitere Informationen zu Abfragevorgängen finden Sie unter IoT Hub-Abfragesprachenoperatoren und IS_DEFINED-Funktion.

Beispiele für Zielbedingungen:

  • deviceId ='linuxprod1'
  • tags.environment ='prod'
  • tags.environment = 'prod' AND tags.location = 'westus'
  • tags.environment = 'prod' OR tags.location = 'westus'
  • tags.operator = 'John' UND tags.environment = 'prod' UND NICHT deviceId = 'linuxprod1'
  • properties.reported.devicemodel = '4000x'
  • IS_DEFINED(tags.remote)
  • NOT IS_DEFINED(tags.location.building)
  • tags.environment != null
  • [none]

Beachten Sie diese Einschränkungen, wenn Sie eine Zielbedingung erstellen:

  • Im Geräte twin können Sie nur eine Zielbedingung mit Tags, gemeldeten Eigenschaften oder deviceId erstellen.
  • Doppelte Anführungszeichen sind in keinem Teil der Zielbedingung zulässig. Verwenden Sie einfache Anführungszeichen.
  • Einfache Anführungszeichen werden für die Werte der Zielbedingung verwendet. Daher müssen Sie für ein einfaches Anführungszeichen ein weiteres einfaches Anführungszeichen als Escapezeichen verwenden, wenn es Teil des Gerätenamens ist. Geben Sie für die Zielbedingung des Geräts mit dem Namen operator'sDevice beispielsweise deviceId='operator''sDevice' an.
  • In Werten für Zielbedingungen sind Zahlen, Buchstaben und folgende Zeichen zulässig: "()<>@,;:\\"/?={} \t\n\r.
  • Die folgenden Zeichen sind in Zielbedingungsschlüsseln nicht zulässig:/;.

Priority

Eine Priorität definiert, ob eine Bereitstellung auf einem Zielgerät relativ zu anderen Bereitstellungen angewendet werden soll. Eine Bereitstellungspriorität ist eine positive ganze Zahl innerhalb des Bereichs von 0 bis 2.147.483.647. Größere Zahlen geben eine höhere Priorität an. Wenn ein IoT Edge-Gerät Ziel mehrerer Bereitstellungen ist, wird die Bereitstellung mit der höchsten Priorität angewendet. Bereitstellungen mit niedrigeren Prioritäten werden nicht angewendet oder zusammengeführt. Wenn ein Gerät Ziel von mehreren Bereitstellungen mit gleicher Priorität ist, gilt die zuletzt erstellte Bereitstellung (entsprechend dem Erstellungszeitstempel).

Bezeichnungen

Bei Bezeichnungen handelt es sich um Schlüssel-Wert-Paare als Zeichenfolgen, mit denen Sie Bereitstellungen filtern und gruppieren können. Eine Bereitstellung kann mehrere Bezeichnungen aufweisen. Bezeichnungen sind optional und wirken sich nicht auf die Konfiguration von IoT Edge-Geräten aus.

Metriken

Alle Bereitstellungen melden standardmäßig über vier Metriken:

  • Gezielt zeigt die IoT Edge-Geräte, die der Zielbedingung für die Bereitstellung entsprechen.
  • "Angewendet" zeigt die zielbezogenen IoT Edge-Geräte an, die nicht auf eine andere Bereitstellung mit höherer Priorität ausgerichtet sind.
  • Der Berichterstellungserfolg zeigt die IoT Edge-Geräte an, die ihre Module als erfolgreich bereitgestellt melden.
  • Fehler beim Melden zeigt die IoT Edge-Geräte an, die mindestens ein Modul als erfolglos bereitgestellt melden. Stellen Sie zum weiteren Untersuchen des Fehlers eine Remoteverbindung mit diesen Geräten her, und zeigen Sie die Protokolldateien an.

Darüber hinaus können Sie Ihre eigenen benutzerdefinierten Metriken zum Überwachen und Verwalten der Bereitstellung definieren.

Metriken bieten zusammenfassende Angaben zu den verschiedenen Zuständen, die Geräte nach dem Anwenden einer Bereitstellungskonfiguration möglicherweise zurückmelden. Metriken können vom edgeHub-Modulzwilling gemeldete Eigenschaften abfragen, z. B. lastDesiredStatus oder lastConnectTime.

Beispiel:

SELECT deviceId FROM devices
  WHERE properties.reported.lastDesiredStatus.code = 200

Das Hinzufügen Ihrer eigenen Metriken ist optional und hat keine Auswirkungen auf die tatsächliche Konfiguration von IoT Edge-Geräten.

Mehrstufige Bereitstellung

Bei mehrstufigen Bereitstellungen handelt es sich um automatische Bereitstellungen, die kombiniert werden können, um die Anzahl der eindeutigen Bereitstellungen, die erstellt werden müssen, zu verringern. Mehrstufige Bereitstellungen sind in Szenarien nützlich, in denen dieselben Module in vielen automatischen Bereitstellungen in verschiedenen Kombinationen wiederverwendet werden.

Mehrstufige Bereitstellungen bestehen aus denselben Grundkomponenten wie jede automatische Bereitstellung. Sie zielen auf Geräte ab, die auf Tags in den Zwillingen des Geräts basieren, und bieten die gleiche Funktionalität für Bezeichnungen, Metriken und Statusberichte. Layered deployments also have priorities to them. Anstatt die Priorität zu verwenden, um zu bestimmen, welche Bereitstellung auf ein Gerät angewendet wird, bestimmt die Priorität, wie mehrere Bereitstellungen auf einem Gerät bewertet werden. Wenn beispielsweise zwei mehrstufige Bereitstellungen ein Modul oder eine Route mit demselben Namen enthalten, wird die Bereitstellung mit der höheren Priorität angewendet und die Bereitstellung mit der niedrigeren Priorität überschrieben.

Die Systemlaufzeitmodule, die als EdgeAgent und EdgeHub bezeichnet werden, werden nicht als Teil einer mehrschichtigen Bereitstellung konfiguriert. Jedes IoT Edge-Gerät, das auf eine mehrschichtige Bereitstellung ausgerichtet ist, benötigt zunächst eine standardmäßige automatische Bereitstellung, die darauf angewendet wird. Bei der automatischen Bereitstellung wird die Basis bereitgestellt, auf der mehrstufige Bereitstellungen hinzugefügt werden können.

Ein IoT Edge-Gerät kann nur eine einzige automatische Standardbereitstellung (aber mehrere mehrstufige automatische Bereitstellungen) anwenden. Alle mehrstufigen Bereitstellungen, deren Ziel ein Gerät ist, müssen eine höhere Priorität als die automatische Bereitstellung für dieses Gerät haben.

Sehen Sie sich beispielsweise das folgende Szenario eines Unternehmens an, das Gebäude verwaltet. Das Unternehmen entwickelte IoT Edge-Module zum Sammeln von Daten aus Sicherheitskameras, Bewegungssensoren und Aufzugen. Allerdings können nicht in allen Gebäuden alle drei Module verwendet werden. Bei automatischen Standardbereitstellungen muss das Unternehmen individuelle Bereitstellungen für alle Modulkombinationen erstellen, die von den jeweiligen Gebäuden benötigt werden.

Screenshot of showing that standard automatic deployments need to accommodate every module combination.

Sobald das Unternehmen jedoch zu mehrschichtigen automatischen Bereitstellungen wechselt, können sie dieselben Modulkombinationen für ihre Gebäude mit weniger Bereitstellungen erstellen, die verwaltet werden können. Jedes Modul verfügt über eine eigene mehrstufige Bereitstellung, und die Gerätetags identifizieren, welche Module dem einzelnen Gebäude hinzugefügt werden.

Screenshot that shows how layered automatic deployments simplify scenarios where the same modules are combined in different ways.

Konfiguration von Modulzwillingen

Wenn Sie mit mehrstufigen Bereitstellungen arbeiten, verfügen Sie – absichtlich oder anderweitig – über zwei Bereitstellungen mit demselben Modul, dessen Ziel ein Gerät ist. In diesen Fällen können Sie entscheiden, ob die Bereitstellung mit höherer Priorität den Modulzwilling überschreiben oder daran angefügt werden soll. Beispielsweise können Sie über eine Bereitstellung verfügen, die das gleiche Modul auf 100 verschiedene Geräte anwendet. 10 dieser Geräte befinden sich allerdings in sicheren Einrichtungen und benötigen eine zusätzliche Konfiguration, um über Proxyserver kommunizieren zu können. Mithilfe einer mehrstufigen Bereitstellung können Sie Eigenschaften für Modulzwillinge hinzufügen, die diesen 10 Geräten eine sichere Kommunikation ermöglichen, ohne dass dadurch die vorhandenen Modulzwillingsinformationen aus der Basisbereitstellung überschrieben werden.

Sie können die gewünschten Eigenschaften des Modulzwillings im Bereitstellungsmanifest anfügen. In einer Standardbereitstellung würden Sie Eigenschaften im Abschnitt "properties.desired " des Moduls Twin hinzufügen. In einer mehrschichtigen Bereitstellung können Sie jedoch eine neue Teilmenge der gewünschten Eigenschaften deklarieren.

So könnten Sie in einer Standardbereitstellung beispielsweise das simulierte Temperatursensor-Modul mit den folgenden gewünschten Eigenschaften hinzufügen, die es anweisen, Daten in Intervallen von 5 Sekunden zu senden:

"SimulatedTemperatureSensor": {
  "properties.desired": {
    "SendData": true,
    "SendInterval": 5
  }
}

In einer mehrschichtigen Bereitstellung, die auf einige oder alle diese Geräte ausgerichtet ist, könnten Sie eine Eigenschaft hinzufügen, die dem simulierten Sensor angibt, 1000 Nachrichten zu senden und dann zu beenden. Weil Sie die vorhandenen Eigenschaften nicht überschreiben möchten, erstellen Sie innerhalb der gewünschten Eigenschaften den neuen Abschnitt layeredProperties, der die neue Eigenschaft enthält:

"SimulatedTemperatureSensor": {
  "properties.desired.layeredProperties": {
    "StopAfterCount": 1000
  }
}

Ein Gerät, auf das beide Bereitstellungen angewendet werden, zeigt im Modulzwilling für den simulierten Temperatursensor folgende Eigenschaften an:

"properties": {
  "desired": {
    "SendData": true,
    "SendInterval": 5,
    "layeredProperties": {
      "StopAfterCount": 1000
    }
  }
}

Wenn Sie das properties.desired Feld des Modul-Zwillings in einer mehrschichtigen Bereitstellung festlegen, properties.desired werden die gewünschten Eigenschaften für dieses Modul in allen Bereitstellungen mit niedrigerer Priorität überschrieben.

Schrittweises Rollout

Bei einem schrittweisen Rollout handelt es sich um ein Verfahren, bei dem ein Operator Änderungen für einen größeren Satz von IoT Edge-Geräten bereitstellt. Das Ziel ist es, schrittweise Änderungen vorzunehmen, um das Risiko zu verringern, dass weitreichende Änderungen vorgenommen werden. Automatische Bereitstellungen unterstützen die Verwaltung von stufenweisen Rollouts in einer Gruppe von IoT Edge-Geräten.

Ein schrittweises Rollout wird in den folgenden Phasen und Schritten ausgeführt:

  1. Richten Sie eine Testumgebung mit IoT Edge-Geräten durch Bereitstellung und Festlegen eines Gerätezwillingstags wie tag.environment='test' ein. Die Testumgebung sollte die Produktionsumgebung spiegeln, auf die die Bereitstellung später abzielt.
  2. Erstellen Sie eine Bereitstellung, einschließlich der gewünschten Module und Konfigurationen. Die Zielbedingung sollte die Testumgebung für IoT Edge-Geräte umfassen.
  3. Überprüfen Sie die neue Modulkonfiguration in der Testumgebung.
  4. Aktualisieren Sie die Bereitstellung mit einer Teilmenge der IoT Edge-Produktionsgeräte, indem Sie der Zielbedingung ein neues Tag hinzufügen. Stellen Sie außerdem sicher, dass die Priorität für die Bereitstellung höher ist als bei anderen Bereitstellungen, die zurzeit für diese Geräte vorgesehen sind.
  5. Überprüfen Sie, ob die Bereitstellung auf den zielbezogenen IoT Edge-Geräten erfolgreich war, indem Sie den Bereitstellungsstatus anzeigen.
  6. Aktualisieren Sie die Bereitstellung so, dass sie auf alle verbleibenden IoT Edge-Produktionsgeräte abzielt.

Rollback

Für Bereitstellungen kann bei Fehlern oder Fehlkonfigurationen ein Rollback ausgeführt werden. Da bei einer Bereitstellung die absolute Modulkonfiguration für ein IoT Edge-Gerät definiert wird, muss eine zusätzliche Bereitstellung auch auf das gleiche Gerät mit niedrigerer Priorität abzielen, auch wenn alle Module entfernt werden sollen.

Durch das Löschen einer Bereitstellung werden die Module nicht von den Zielgeräten entfernt. Es muss eine andere Bereitstellung vorhanden sein, die eine neue Konfiguration für die Geräte definiert – selbst wenn es sich um eine leere Bereitstellung handelt.

Durch das Löschen einer Bereitstellung können jedoch Module vom Zielgerät entfernt werden, wenn es sich um eine mehrstufige Bereitstellung handelt. Bei einer mehrstufigen Bereitstellung wird die zugrunde liegende Bereitstellung aktualisiert, und es werden möglicherweise Module hinzugefügt. Durch das Entfernen einer mehrstufigen Bereitstellung wird die Aktualisierung der zugrunde liegenden Bereitstellung entfernt, und es werden möglicherweise Module entfernt.

Ein Gerät verfügt beispielsweise über die Basisbereitstellung A und die mehrstufigen Bereitstellungen O und M (sodass die Bereitstellungen A, O und M auf dem Gerät bereitgestellt werden). Wenn die mehrstufige Bereitstellung M gelöscht wird, werden A und O auf das Gerät angewendet, und die für Bereitstellung M eindeutigen Module werden entfernt.

Führen Sie die Schritte für Rollbacks in der folgenden Reihenfolge aus:

  1. Vergewissern Sie sich, dass eine zweite Bereitstellung für die gleiche Gruppe von Geräten vorhanden ist. Wenn bei dem Rollback alle Module entfernt werden sollen, sollte die zweite Bereitstellung keine Module enthalten.
  2. Ändern oder entfernen Sie den Ausdruck für die Zielbedingung bei der Bereitstellung, für die ein Rollback ausgeführt werden soll, sodass die Geräte die Zielbedingung nicht mehr erfüllen.
  3. Stellen Sie sicher, dass das Rollback erfolgreich war, indem Sie den Bereitstellungsstatus anzeigen.
    • Die Bereitstellung, für die das Rollback ausgeführt wurde, sollte keinen Status für die Geräte mehr anzeigen, auf die sich das Rollback bezogen hat.
    • Die zweite Bereitstellung sollte den Bereitstellungsstatus für die Geräte enthalten, für die das Rollback ausgeführt wurde.

Nächste Schritte