Freigeben über


Erstellen und Bereitstellen von loT Edge-Geräten in großem Umfang unter Linux mit symmetrischem Schlüssel

Gilt für:Häkchen für IoT Edge 1.5 IoT Edge 1.5

Wichtig

IoT Edge 1.5 LTS ist das unterstützte Release. IoT Edge 1.4 LTS wurde am 12. November 2024 eingestellt. Wenn Sie ein früheres Release verwenden, finden Sie weitere Informationen unter Aktualisieren von IoT Edge.

Dieser Artikel enthält schrittweise Anleitungen zum Einrichten eines oder mehrerer Linux IoT Edge-Geräte mit symmetrischen Schlüsseln. Automatisches Einrichten von Azure IoT Edge-Geräten mit dem Azure IoT Hub-Gerätebereitstellungsdienst (DPS). Wenn Sie mit dem Prozess für die automatische Bereitstellung nicht vertraut sind, lesen Sie die Übersicht über die Bereitstellung , bevor Sie fortfahren.

Hier sind die wichtigsten Aufgaben:

  1. Erstellen Sie eine einzelne 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.

Tipp

Verwenden Sie für eine vereinfachte Benutzeroberfläche das Azure IoT Edge-Konfigurationstool. Dieses Befehlszeilentool, das sich zurzeit in der öffentlichen Vorschau befindet, installiert IoT Edge auf Ihrem Gerät und stellt es mithilfe von DPS und dem Nachweis des symmetrischen Schlüssels zur Verfügung.

Der symmetrische Schlüsselnachweis ist eine einfache Möglichkeit, ein Gerät mit einer Gerätebereitstellungsdienstinstanz zu authentifizieren. Bei dieser Methode handelt es sich um eine "Hello world"-Erfahrung für Entwickler, die mit der Gerätebereitstellung noch nicht vertraut sind oder keine strengen Sicherheitsanforderungen haben. Der Gerätenachweis mit einem TPM - oder X.509-Zertifikat ist sicherer, und Sie sollten ihn für strengere Sicherheitsanforderungen verwenden.

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

Verwenden Sie ein physisches oder virtuelles Linux-Gerät als IoT Edge-Gerät.

Definieren Sie eine eindeutigeRegistrierungs-ID , um jedes Gerät zu identifizieren. Verwenden Sie die MAC-Adresse, Seriennummer oder alle eindeutigen Informationen vom Gerät. Kombinieren Sie beispielsweise eine MAC-Adresse und Seriennummer, um eine Registrierungs-ID wie sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6 zu bilden. Gültige Zeichen sind alphanumerische Kleinbuchstaben und Bindestriche (-).

Erstellen einer DPS-Registrierung

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, haben Sie die Möglichkeit, einen Anfangszustand des Gerätezwillings zu deklarieren. Im Gerätezwilling können Sie Tags zum Gruppieren von Geräten nach jeder beliebigen Metrik, z.B. Region, Umgebung, Speicherort oder Geräte, festlegen, die Sie in Ihrer Projektmappe benötigen. Diese Tags werden zum Erstellen von automatischen Bereitstellungen verwendet.

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

Erstellen einer individuellen DPS-Registrierung

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 zu Anfänglicher Status von Gerätezwilling 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 Ihren virtuellen Linux Computer oder Ihr physisches Gerät für loT 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 Tier-1-Supportliste entfernt. Um potenzielle Sicherheitsrisiken zu vermeiden, aktualisieren Sie Ihr Hostbetriebssystem auf Bullseye.

Für unterstützte Plattformbetriebssysteme der Ebene 2 werden Installationspakete in Azure IoT Edge-Releases zur Verfügung gestellt. Lesen Sie die Installationsschritte in der Offline- oder bestimmten Versionsinstallation (optional).

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

  • 24.04:

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

    wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 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
    

Weitere Informationen zu den Betriebssystemversionen finden Sie unter Unterstützte Plattformen für Azure IoT Edge.

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. Die Moby-Engine ist die Container-Engine, die offiziell von IoT Edge unterstützt wird. Docker CE/EE-Containerimages sind mit der Moby-Runtime kompatibel. Wenn Sie Ubuntu Core-Snaps verwenden, wird das Docker-Snap von Canonical gewartet und unterstützt Produktionsszenarien.

Installieren Sie die Moby-Engine.

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

Standardmäßig legt die Containerengine keine Grenzwerte für die Größe des Containerprotokolls fest. Im Laufe der Zeit kann diese Situation dazu führen, dass das Gerät voll mit Logdateien wird und der Speicherplatz der Festplatte ausläuft. Sie können Ihr Protokoll jedoch so konfigurieren, dass es lokal angezeigt wird, allerdings ist dies optional. Weitere Informationen zur Protokollierungskonfiguration finden Sie unter "Vorbereiten der Bereitstellung Ihrer IoT Edge-Lösung in der Produktion".

Die folgenden Schritte zeigen Ihnen, wie Sie Ihren Container so konfigurieren, dass der Protokollierungstreiber local als Protokollierungsmechanismus verwendet wird.

  1. Erstellen oder Bearbeiten der Konfigurationsdatei des vorhandenen Docker-Daemons

    sudo nano /etc/docker/daemon.json
    
  2. Legen Sie den Standardprotokollierungstreiber auf den Protokollierungstreiber local fest, wie im folgenden Beispiel gezeigt.

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

    sudo systemctl restart docker
    

Installieren der IoT Edge-Runtime

Der IoT Edge-Dienst stellt Sicherheitsstandards auf dem IoT Edge-Gerät bereit und sorgt für deren Einhaltung. Der Dienst wird bei jedem Start gestartet und führt durch Starten der restlichen IoT Edge-Runtime einen Bootstrap für das Gerät aus.

Hinweis

Ab Version 1.2 verarbeitet der Azure IoT-Identitätsdienst die Identitätsbereitstellung und -verwaltung für IoT Edge und für andere Gerätekomponenten, die mit IoT Hub kommunizieren müssen.

Die Schritte in diesem Abschnitt stellen den typischen Prozess zur Installation der neuesten IoT Edge-Version auf einem Gerät mit Internetverbindung dar. Wenn Sie eine bestimmte Version( z. B. eine Vorabversion) installieren oder offline installieren müssen, führen Sie die Schritte zur Offlineinstallation oder spezifischen Versionsinstallationsschritte weiter unten in diesem Artikel aus.

Tipp

Wenn Sie bereits über ein IoT Edge-Gerät mit einer älteren Version verfügen und ein Upgrade auf die neueste Version durchführen möchten, führen Sie die Schritte in Update IoT Edge aus. Neuere Versionen unterscheiden sich ausreichend von früheren IoT Edge-Versionen, sodass bestimmte Schritte für das Upgrade erforderlich sind.

Installieren Sie die neueste Version von IoT Edge und das IoT-Identitätsdienstpaket (falls Sie nicht bereits auf dem neuesten Stand sind):

  • 22.04:

    sudo apt-get update; \
       sudo apt-get install aziot-edge
    
  • 20.04:

    sudo apt-get update; \
       sudo apt-get install aziot-edge
    

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:

  • Den Wert für den DPS-ID-Bereich
  • 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.

Erstellen Sie eine Konfigurationsdatei für Ihr Gerät basierend auf einer Vorlagendatei, die im Rahmen der IoT Edge-Installation bereitgestellt wird.

sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml

Öffnen Sie die Konfigurationsdatei auf dem IoT Edge-Gerät.

sudo nano /etc/aziot/config.toml
  1. Suchen Sie den Abschnitt Provisioning (Bereitstellung) der Datei. Heben Sie die Auskommentierung der Zeilen für die DPS-Bereitstellung mit symmetrischem Schlüssel auf, und vergewissern Sie sich, dass alle anderen Bereitstellungszeilen auskommentiert sind.

    # DPS provisioning with symmetric key
    [provisioning]
    source = "dps"
    global_endpoint = "https://global.azure-devices-provisioning.net"
    id_scope = "PASTE_YOUR_SCOPE_ID_HERE"
    
    # Uncomment to send a custom payload during DPS registration
    # payload = { uri = "PATH_TO_JSON_FILE" }
    
    [provisioning.attestation]
    method = "symmetric_key"
    registration_id = "PASTE_YOUR_REGISTRATION_ID_HERE"
    
    symmetric_key = { value = "PASTE_YOUR_PRIMARY_KEY_OR_DERIVED_KEY_HERE" }
    
    # auto_reprovisioning_mode = Dynamic
    
  2. Aktualisieren Sie die Werte id_scope, registration_idund symmetric_key mit Ihren DPS- und Geräteinformationen.

    Der symmetrische Schlüsselparameter kann einen Inlineschlüssel, einen Datei-URI oder einen PKCS#11-URI akzeptieren. Heben Sie die Auskommentierung von nur einer Zeile auf, basierend auf dem Format, das Sie verwenden möchten. Wenn Sie einen Inlineschlüssel verwenden, verwenden Sie einen base64-codierten Schlüssel wie das Beispiel. Wenn Sie einen Datei-URI verwenden, muss die Datei die unformatierten Bytes des Schlüssels enthalten.

    Wenn Sie PKCS#11-URIs verwenden, suchen Sie den Abschnitt PKCS#11 in der Konfigurationsdatei, und geben Sie Ihre PKCS#11-Konfigurationsinformationen ein.

    Weitere Informationen zur Bereitstellung von Konfigurationseinstellungen finden Sie unter Konfigurieren von IoT Edge-Geräteeinstellungen.

  3. Suchen Sie optional in der Datei nach dem Abschnitt zum „Modus für die automatische erneute Bereitstellung“. Verwenden Sie den Parameter auto_reprovisioning_mode, um das Verhalten bei der erneuten Bereitstellung Ihres Geräts festzulegen. Dynamisch – Erneute Bereitstellung, wenn das Gerät erkennt, dass es von einem IoT-Hub in einen anderen verschoben werden kann. Dies ist die Standardeinstellung. AlwaysOnStartup – Erneute Bereitstellung, wenn das Gerät neu gestartet wird oder ein Absturz dazu führt, dass die Daemons neu gestartet werden. OnErrorOnly – Löst niemals automatisch die erneute Bereitstellung des Geräts aus. Jeder Modus verfügt über einen impliziten Fallback zur erneuten Bereitstellung von Geräten, wenn das Gerät während der Identitätsbereitstellung aufgrund von Verbindungsfehlern keine Verbindung mit dem IoT Hub herstellen kann. Weitere Informationen finden Sie unter IoT Hub Device-Konzepte für die erneute Bereitstellung.

  4. Optional können Sie die Auskommentierung des Parameters payload aufheben, um den Pfad zu einer lokalen JSON-Datei anzugeben. Der Inhalt der Datei wird beim Registrieren des Geräts als zusätzliche Daten an DPS gesendet . Dies ist nützlich für die benutzerdefinierte Zuordnung. Beispiel: Sie möchten Ihre Geräte basierend auf der ID des IoT Plug & Play-Modells ohne menschliches Eingreifen zuordnen.

  5. Speichern und schließen Sie die Datei.

  6. Wenden Sie die konfigurationsänderungen an, die Sie auf dem Gerät vorgenommen haben.

    sudo iotedge config apply
    

Überprüfen der erfolgreichen Installation

Wenn die Laufzeit erfolgreich gestartet wird, wechseln Sie zu Ihrem IoT Hub, und beginnen Sie mit der Bereitstellung von IoT Edge-Modulen auf Ihrem Gerät.

Überprüfen Sie, ob die einzelne Registrierung, die Sie im Gerätebereitstellungsdienst erstellt haben, verwendet wird. Navigieren Sie im Azure-Portal zu Ihrer Device Provisioning-Service-Instanz. Öffnen Sie die Registrierungsdetails für die einzelne Registrierung, die Sie erstellt haben. Der Status der Registrierung wird zugewiesen, und die Geräte-ID wird aufgelistet.

Führen Sie diese Befehle auf Ihrem Gerät aus, um zu überprüfen, ob IoT Edge erfolgreich installiert und gestartet wird.

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

    sudo iotedge system status
    
  2. Dienstprotokolle anzeigen.

    sudo iotedge system logs
    
  3. Führen Sie ausgeführte Module auf.

    sudo iotedge list
    

Nächste Schritte

Mit dem Registrierungsprozess des Bereitstellungsdiensts können Sie die Geräte-ID und die Geräte-Twin-Tags festlegen, wenn Sie ein neues Gerät einrichten. Verwenden Sie diese Werte, um einzelne Geräte oder Gerätegruppen mit automatischer Geräteverwaltung anzusprechen. Erfahren Sie, wie Sie IoT Edge-Module über das Azure-Portal oder mithilfe der Azure CLI bereitstellen und überwachen.