Freigeben über


Erstellen und Bereitstellen von IoT Edge-Geräten im großen Maßstab unter Linux mit einem symmetrischen Schlüssel.

Gilt für:Ja-Symbol IoT Edge 1.1

Wichtig

IoT Edge 1.1 Ende des Supports war der 13. Dezember 2022. Informationen darüber, wie dieses Produkt, dieser Dienst, diese Technologie oder diese API unterstützt werden, finden Sie im Microsoft Product Lifecycle. Weitere Informationen zum Aktualisieren auf die neueste Version von IoT Edge finden Sie unter Update IoT Edge.

In diesem Artikel finden Sie eine umfassende Anleitung für die automatische Bereitstellung von einem oder mehreren Linux IoT Edge-Geräten mit symmetrischen Schlüsseln. Sie können Azure loT Edge-Geräte mit dem Azure loT Hub-Device Provisioning Service (DPS) automatisch bereitstellen. Wenn Sie mit dem Prozess der automatischen Bereitstellung nicht vertraut sind, lesen Sie die Übersicht zur Bereitstellung, bevor Sie den Vorgang fortsetzen.

Die Aufgaben sind wie folgt:

  1. Erstellen Sie entweder eine individuelle Registrierung für ein einzelnes Gerät oder eine Gruppenregistrierung für eine Gruppe von Geräten.
  2. Installieren Sie die IoT Edge-Runtime, und verbinden Sie das Gerät mit dem IoT Hub.

Der Nachweis des symmetrischen Schlüssels ist eine einfache Methode zum Authentifizieren eines Geräts mit einer Device Provisioning Service-Instanz. Diese Nachweismethode stellt eine „Hallo Welt“-Umgebung für Entwickler bereit, die noch nicht mit der Gerätebereitstellung vertraut sind oder keine strengen Sicherheitsanforderungen haben. Die Gerätebestätigung bzw. der Nachweis mithilfe eines TPM (Trusted Platform Module) oder von X.509-Zertifikaten ist sicherer und sollte verwendet werden, wenn striktere Sicherheitsanforderungen gelten.

Voraussetzungen

Cloudressourcen

  • Ein aktiver IoT-Hub
  • Eine Instanz des IoT Hub Device Provisioning Service (Gerätebereitstellungsdienst) in Azure, die mit Ihrem IoT-Hub verknüpft ist

Geräteanforderungen

Ein physisches oder virtuelles Linux-Gerät, dass das IoT Edge-Gerät sein soll.

Sie müssen eine eindeutigeRegistrierungs-ID definieren, um jedes Gerät zu identifizieren. Sie können die MAC-Adresse, Seriennummer oder eindeutige Informationen vom Gerät verwenden. So könnten Sie beispielsweise mithilfe einer Kombination aus MAC-Adresse und Seriennummer diese Zeichenfolge für eine Registrierungs-ID bilden: sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6. Gültige Zeichen sind alphanumerische Kleinbuchstaben und Bindestriche (-).

DPS-Anmeldung erstellen

Erstellen Sie eine Registrierung, um ein oder mehrere Geräte über DPS bereitzustellen.

Wenn Sie ein einzelnes IoT Edge-Gerät bereitstellen möchten, erstellen Sie eine individuelle Registrierung. Wenn Sie mehrere Geräte bereitstellen müssen, führen Sie die Schritte zum Erstellen einer DPS-Gruppenregistrierung aus.

Wenn Sie eine Registrierung im DPS erstellen, können Sie einen Anfangszustand des Gerätezwillings deklarieren. Im Gerätezwilling können Sie Tags zum Gruppieren von Geräten nach jeder beliebigen Metrik, die Sie in Ihrer Lösung benötigen, wie Region, Umgebung, Standort oder Gerätetyp, festlegen. Diese Tags werden zum Erzeugen von automatischen Bereitstellungen verwendet.

Weitere Informationen zu Registrierungen im Device Provisioning Service finden Sie unter Verwalten von Geräteregistrierungen.

Einen individuellen DPS-Antrag erstellen

Tipp

Die Schritte in diesem Artikel gelten für das Azure-Portal. Sie können individuelle Registrierungen aber auch mithilfe der Azure CLI erstellen. Weitere Informationen finden Sie unter az iot dps-Registrierung. Verwenden Sie als Teil des CLI-Befehls das Flag edge-enabled (Edge-fähig), um anzugeben, dass die Registrierung für ein IoT Edge-Gerät gilt.

  1. Navigieren Sie im Azure-Portal zu Ihrer Instanz des IoT Hub Device Provisioning Service.

  2. Klicken Sie in Einstellungen auf Registrierungen verwalten.

  3. Klicken Sie auf Individuelle Registrierung hinzufügen, und führen Sie dann die folgenden Schritte aus, um die Registrierung zu konfigurieren:

    1. Wählen Sie unter Mechanismus die Option Symmetrischer Schlüssel aus.

    2. Geben Sie eine eindeutige Registrierungs-ID für Ihr Gerät an.

    3. Optional können Sie eine IoT Hub-Geräte-ID für Ihr Gerät angeben. Sie können mithilfe von Geräte-IDs ein einzelnes Gerät als Ziel für die Modulbereitstellung festlegen. Wenn Sie keine Geräte-ID angeben, wird die Registrierungs-ID verwendet.

    4. Wählen Sie True aus, um anzugeben, dass die Registrierung für ein IoT Edge-Gerät erfolgt.

    5. Fügen Sie optional einen Tagwert zum anfänglichen Zustand des Gerätezwillings hinzu. Sie können mithilfe von Tags Gruppen von Geräten als Ziel für die Modulbereitstellung festlegen. Beispiel:

      {
         "tags": {
            "environment": "test"
         },
         "properties": {
            "desired": {}
         }
      }
      
    6. Wählen Sie Speichern aus.

  4. Kopieren Sie den Wert Primärschlüssel der individuellen Registrierung, der beim Installieren der IoT Edge-Runtime verwendet werden soll.

Nachdem nun eine Registrierung für dieses Gerät vorhanden ist, kann die IoT Edge-Runtime das Gerät während der Installation automatisch bereitstellen.

Installieren von IoT Edge

In diesem Abschnitt bereiten Sie Ihre Linux-VM oder Ihr physisches Gerät für IoT Edge vor. Anschließend installieren Sie IoT Edge.

Führen Sie die folgenden Befehle aus, um das Paketrepository hinzuzufügen, und fügen Sie dann Ihrer Liste von vertrauenswürdigen Schlüsseln den Microsoft-Paketsignaturschlüssel hinzu.

Wichtig

Am 30. Juni 2022 wurde Raspberry Pi OS Stretch aus der Betriebssystem-Supportliste der Stufe 1 zurückgezogen. Wenn Sie potenzielle Sicherheitsrisiken vermeiden möchten, aktualisieren Sie Ihr Hostbetriebssystem auf Bullseye.

Die Installation kann mit einigen wenigen Befehlen erledigt werden. Öffnen Sie ein Terminal, und führen Sie die folgenden Befehle aus:

  • 20.04:

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 18.04:

    wget https://packages.microsoft.com/config/ubuntu/18.04/multiarch/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

Hinweis

Für Azure IoT Edge-Softwarepakete gelten die in jedem Paket (im Verzeichnis usr/share/doc/{package-name} oder LICENSE) enthaltenen Lizenzbedingungen. Lesen Sie die Lizenzbedingungen, bevor Sie ein Paket verwenden. Durch Ihre Installation und Verwendung eines Pakets erklären Sie Ihre Zustimmung zu diesen Bedingungen. Wenn Sie den Lizenzbedingungen nicht zustimmen, verwenden Sie das Paket nicht.

Installieren einer Containerengine

Azure IoT Edge basiert auf einer OCI-kompatiblen Containerruntime. Für Produktionsszenarien empfehlen wir die Verwendung der Moby-Engine. Das Moby-Modul ist das einzige Containermodul, das offiziell mit IoT Edge unterstützt wird. Docker CE / EE-Container-Images sind mit der Moby-Runtime kompatibel.

Installieren Sie die Moby-Engine.

sudo apt-get update; \
  sudo apt-get install moby-engine

Nachdem das Moby-Modul erfolgreich installiert wurde, konfigurieren Sie es so, dass local Protokollierungstreiber als Protokollierungsmechanismus verwendet wird. Weitere Informationen zur Protokollierungskonfiguration finden Sie in der Prüfliste zur Produktionsbereitstellung.

  • Erstellen oder öffnen Sie die Config-Datei des Docker-Daemons unter /etc/docker/daemon.json.

  • Legen Sie den Standardprotokollierungstreiber auf den local Protokollierungstreiber fest, wie im folgenden Beispiel gezeigt.

       {
          "log-driver": "local"
       }
    
  • Starten Sie die Container-Engine neu, damit die Änderungen wirksam werden.

    sudo systemctl restart docker
    

    Tipp

    Wenn beim Installieren der Moby-Container-Engine Fehler angezeigt werden, überprüfen Sie Ihren Linux-Kernel auf Moby-Kompatibilität. Einige Hersteller von eingebetteten Geräten stellen Geräteimages mit benutzerdefinierten Linux-Kernels bereit, denen die Funktionen für die Containerengine-Kompatibilität fehlen. Führen Sie den folgenden Befehl aus, der das von Moby bereitgestellte check-config-Skript verwendet, um die Kernelkonfiguration zu überprüfen:

    curl -ssl https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh
    chmod +x check-config.sh
    ./check-config.sh
    

    Überprüfen Sie in der Ausgabe des Skripts, ob alle Elemente unter Generally Necessary und Network Drivers aktiviert sind. Wenn Funktionen fehlen, aktivieren Sie diese, indem Sie Ihren Kernel aus der Quelle neu erstellen und die zugehörigen Module auswählen, die in die entsprechende Konfigurationsdatei für den Kernel eingebunden werden sollen. Gleiches gilt, wenn Sie einen Kernelkonfigurationsgenerator wie defconfig oder menuconfig verwenden: Suchen und aktivieren Sie die entsprechenden Funktionen, und erstellen Sie dann den Kernel dementsprechend neu. Sobald Sie Ihren neu bearbeiteten Kernel bereitgestellt haben, führen Sie das check-config-Skript erneut aus, um zu überprüfen, ob alle erforderlichen Funktionen erfolgreich aktiviert wurden.

Installieren der IoT Edge-Runtime

Der IoT Edge-Sicherheitsdaemon stellt Sicherheitsstandards auf dem IoT Edge-Gerät bereit und verwaltet diese. Der Daemon wird bei jedem Startvorgang ausgeführt und initialisiert das Gerät, indem er den Rest der IoT Edge-Laufzeit startet.

Die Schritte in diesem Abschnitt stellen den typischen Prozess zum Installieren der neuesten Version auf einem Gerät dar, das über eine Internetverbindung verfügt. Wenn Sie eine bestimmte Version, z. B eine Vorabversion, installieren oder eine Offlineinstallation durchführen müssen, führen Sie die Schritte unter Offlineinstallation oder Installation einer bestimmten Version weiter unten in diesem Artikel aus.

Installieren Sie IoT Edge Version 1.1.* zusammen mit dem libiothsm-std Paket:

sudo apt-get update; \
  sudo apt-get install iotedge

Hinweis

IoT Edge Version 1.1 ist der langfristige Supportzweig von IoT Edge. Wenn Sie eine ältere Version ausführen, empfehlen wir die Installation oder Aktualisierung auf den neuesten Patch, da ältere Versionen nicht mehr unterstützt werden.

Bereitstellen des Geräts mit seiner Cloud-Identität

Konfigurieren Sie Ihr Gerät mit den Informationen, die es zum Herstellen einer Verbindung mit dem Gerätebereitstellungsdienst und IoT Hub verwendet, sobald die Runtime auf Ihrem Gerät installiert ist.

Halten Sie die folgenden Informationen bereit:

  • Der Wert des DPS-ID-Bereichs
  • Die von Ihnen erstellte Registrierungs-ID für das Gerät
  • Entweder der Primärschlüssel aus einer individuellen Registrierung oder ein abgeleiteter Schlüssel für Geräte, die eine Gruppenregistrierung verwenden.
  1. Öffnen Sie die Konfigurationsdatei auf dem IoT Edge-Gerät.

    sudo nano /etc/iotedge/config.yaml
    
  2. Suchen Sie den Abschnitt zu Bereitstellungskonfigurationen der Datei. Entkommentieren Sie die Zeilen für die DPS-symmetrische Schlüsselbereitstellung, und stellen Sie sicher, dass alle anderen Bereitstellungszeilen auskommentiert sind.

    Die provisioning:-Zeile sollte kein vorangehendes Leerzeichen aufweisen, und geschachtelte Elemente sollten durch zwei Leerzeichen eingerückt werden.

    # DPS TPM provisioning configuration
    provisioning:
      source: "dps"
      global_endpoint: "https://global.azure-devices-provisioning.net"
      scope_id: "PASTE_YOUR_SCOPE_ID_HERE"
      attestation:
        method: "symmetric_key"
        registration_id: "PASTE_YOUR_REGISTRATION_ID_HERE"
        symmetric_key: "PASTE_YOUR_PRIMARY_KEY_OR_DERIVED_KEY_HERE"
    
    # always_reprovision_on_startup: true
    # dynamic_reprovisioning: true
    
  3. Aktualisieren Sie die Werte scope_id, registration_idund symmetric_key mit Ihren DPS- und Geräteinformationen.

  4. Verwenden Sie eventuell die always_reprovision_on_startup- oder dynamic_reprovisioning-Zeilen, um das Reprovisionierungsverhalten Ihres Geräts zu konfigurieren. Wenn ein Gerät so eingestellt ist, dass es beim Start neu bereitgestellt wird, wird es immer versuchen, zuerst mit DPS bereitzustellen und dann, falls das fehlschlägt, auf das Backup zur Bereitstellung zurückzugreifen. Wenn ein Gerät so eingestellt ist, dass es sich dynamisch neu bereitstellen kann, wird IoT Edge (und alle Module) neu gestartet und erneut bereitgestellt, wenn ein Ereignis für die Neubereitstellung erkannt wird, z. B. wenn das Gerät von einem IoT Hub in einen anderen verschoben wird. Insbesondere überprüft IoT Edge auf bad_credential- oder device_disabled-Fehler aus dem SDK, um das Re-Provisionierungsereignis zu erkennen. Um dieses Ereignis manuell auszulösen, deaktivieren Sie das Gerät im IoT Hub. Weitere Informationen finden Sie unter Konzepte zur erneuten Bereitstellung von Geräten im IoT Hub.

  5. Starten Sie die IoT Edge-Laufzeit neu, damit alle Konfigurationsänderungen, die Sie auf dem Gerät vorgenommen haben, aufgenommen werden.

    sudo systemctl restart iotedge
    

Bestätigen einer erfolgreichen Installation

Wenn die Runtime erfolgreich gestartet wurde, können Sie zu Ihrem IoT Hub navigieren und mit dem Bereitstellen von IoT Edge-Modulen auf Ihrem Gerät beginnen.

Sie können überprüfen, ob die individuelle Registrierung, die Sie im Gerätebereitstellungsdienst erstellt haben, verwendet wurde. Navigieren Sie im Azure-Portal zu Ihrer Instanz für den Gerätebereitstellungsdienst. Öffnen Sie die Registrierungsdetails für die von Ihnen erstellte individuelle Registrierung. Beachten Sie, dass der Status der Registrierung Zugewiesen lautet und die Geräte-ID aufgeführt ist.

Mit den folgenden Befehlen können Sie auf Ihrem Gerät überprüfen, ob IoT Edge erfolgreich installiert und gestartet wurde.

Überprüfen Sie den Status des IoT Edge-Diensts.

systemctl status iotedge

Untersuchen Sie die Dienstprotokolle.

journalctl -u iotedge --no-pager --no-full

Laufende Module auflisten.

iotedge list

Nächste Schritte

Der Registrierungsprozess des Device Provisioning Service ermöglicht es Ihnen, beim Bereitstellen des neuen Geräts gleichzeitig die Geräte-ID und die Gerätezwillingstags festzulegen. Sie können diese Werte verwenden, um einzelne Geräte oder Gruppen von Geräten über die automatische Geräteverwaltung als Ziel festzulegen. Weitere Informationen finden Sie unter Bedarfsgerechtes Bereitstellen und Überwachen von IoT Edge-Modulen mithilfe des Azure-Portals oder Verwenden der Azure CLI.