Teilen über


Tutorial: Konfigurieren eines Azure IoT Edge-Geräts

Gilt für: yes icon IoT Edge 1.1

Wichtig

IoT Edge 1.1: Datum für das Supportende war der 13. Dezember 2022. Informationen zur Unterstützung für dieses Produkt, diesen Dienst, diese Technologie oder diese API finden Sie in der Microsoft Lifecycle-Richtlinie. Weitere Informationen zum Aktualisieren auf die neueste Version von IoT Edge finden Sie unter Update IoT Edge.

In diesem Artikel konfigurieren wir einen virtuellen Azure-Computer unter Linux als Azure IoT Edge-Gerät, das als transparentes Gateway fungiert. Die Konfiguration eines transparenten Gateways ermöglicht es Geräten, eine Verbindung mit Azure IoT Hub über das Gateway herzustellen, ohne zu wissen, dass das Gateway vorhanden ist. Gleichzeitig ist auch ein Benutzer, der mit den Geräten in IoT Hub interagiert, nicht über das zwischengeschaltete Gatewaygerät informiert. Am Ende fügen wir unserem System eine Edgeanalyse hinzu, indem wir dem transparenten Gateway IoT Edge-Module hinzufügen.

Hinweis

Die Konzepte in diesem Tutorial gelten für alle Versionen von IoT Edge. Auf dem Beispielgerät, das Sie zum Ausprobieren des Szenarios erstellen, wird jedoch Version 1.1. von IoT Edge ausgeführt.

Die Schritte in diesem Artikel werden normalerweise von einem Cloudentwickler ausgeführt.

In diesem Abschnitt des Tutorials lernen Sie Folgendes:

  • Erstellen von Zertifikaten, um Ihrem Gatewaygerät das Herstellen einer sicheren Verbindung mit den nachgeschalteten Geräten zu ermöglichen
  • Erstellen eines IoT Edge-Geräts
  • Erstellen eines virtuellen Azure-Computers zum Simulieren des IoT Edge-Geräts

Voraussetzungen

Dieser Artikel ist Teil einer Tutorialreihe zur Verwendung von Azure Machine Learning für IoT Edge. Jeder Artikel in der Reihe baut auf der Arbeit im vorherigen Artikel auf. Wenn Sie diesen Artikel direkt aufgerufen haben, wechseln Sie zum ersten Artikel in der Reihe.

Erstellen von Zertifikaten

Damit ein Gerät als Gateway fungieren kann, muss es eine sichere Verbindung mit nachgeschalteten Geräten herstellen können. Mit IoT Edge können Sie mithilfe der Public Key-Infrastruktur (PKI) sichere Verbindungen zwischen Geräten einrichten. In diesem Fall lassen Sie zu, dass ein nachgeschaltetes IoT-Gerät eine Verbindung mit einem IoT Edge-Gerät herstellt, das als transparentes Gateway fungiert. Um eine angemessene Sicherheit zu gewährleisten, sollte das nachgeschaltete Gerät die Identität des IoT Edge-Geräts bestätigen. Weitere Informationen dazu, wie IoT Edge-Geräte Zertifikate verwenden, finden Sie unter Details zur Verwendung von Azure IoT Edge-Zertifikaten.

In diesem Abschnitt erstellen wir die selbstsignierten Zertifikate mithilfe eines Docker-Images, das wir anschließend erstellen und ausführen. Wir haben uns bei diesem Schritt für ein Docker-Image entschieden, weil sich hierdurch der Aufwand zum Erstellen der Zertifikate auf dem Windows-Entwicklungscomputer verringert. Informationen zu den mit dem Docker-Image automatisierten Komponenten finden Sie unter Erstellen von Demozertifikaten zum Testen der Features von IoT Edge-Geräten.

  1. Melden Sie sich bei Ihrem virtuellen Entwicklungscomputer an.

  2. Erstellen Sie folgenden neuen Ordner: c:\edgeCertificates.

  3. Wenn Docker für Windows noch nicht ausgeführt wird, starten Sie die Anwendung über das Windows-Startmenü.

  4. Öffnen Sie Visual Studio Code.

  5. Klicken Sie auf Datei>Ordner öffnen und wählen Sie C:\source\IoTEdgeAndMlSample\CreateCertificates aus.

  6. Klicken Sie im Explorer-Bereich mit der rechten Maustaste auf dockerfile, und wählen Sie Image erstellen aus.

  7. Übernehmen Sie im Dialogfeld den Standardwert für Imagename und Tag: createcertificates: latest.

    Screenshot: Erstellen von Zertifikaten in Visual Studio Code

  8. Warten Sie, bis der Buildvorgang abgeschlossen wird.

    Hinweis

    Möglicherweise wird eine Warnung zu einem fehlenden öffentlichen Schlüssel angezeigt. Sie können diese Warnung ignorieren. Sie sehen wahrscheinlich auch eine Sicherheitswarnung mit dem Hinweis, dass Sie die Berechtigungen auf Ihrem Image überprüfen bzw. zurücksetzen sollten. Sie können diesen Hinweis für dieses Image ignorieren.

  9. Führen Sie im Visual Studio Code-Terminalfenster den Container „createcertificates“ aus.

    docker run --name createcertificates --rm -v c:\edgeCertificates:/edgeCertificates createcertificates /edgeCertificates
    
  10. Docker fordert Sie auf, Zugriff auf das Laufwerk c:\ zu gewähren. Wählen Sie Teilen.

  11. Geben Sie Ihre Anmeldeinformationen ein, wenn Sie dazu aufgefordert werden.

  12. Überprüfen Sie nach Abschluss der Containerausführung, ob die folgenden Dateien unter c:\edgeCertificates vorhanden sind:

    • c:\edgeCertificates\certs\azure-iot-test-only.root.ca.cert.pem
    • c:\edgeCertificates\certs\new-edge-device-full-chain.cert.pem
    • c:\edgeCertificates\certs\new-edge-device.cert.pem
    • c:\edgeCertificates\certs\new-edge-device.cert.pfx
    • c:\edgeCertificates\private\new-edge-device.key.pem

Hochladen von Zertifikaten in Azure Key Vault

Wir laden die Zertifikate in Azure Key Vault hoch, um sie sicher zu speichern und den Zugriff darauf von mehreren Geräten aus zu ermöglichen. Wie Sie in der Liste oben sehen, gibt es zwei Arten von Zertifikatdateien: PFX und PEM. Wir behandeln die PFX-Dateien als Key Vault-Zertifikate, die in Key Vault hochgeladen werden sollen. Die PEM-Dateien sind Nur-Text-Dateien und werden als Key Vault-Geheimnisse behandelt. Wir verwenden die Key Vault-Instanz, die dem Azure Machine Learning-Arbeitsbereich zugeordnet ist, den wir durch Ausführen der Jupyter-Notebooks erstellt haben.

  1. Navigieren Sie im Azure-Portal zu Ihrem Azure Machine Learning-Arbeitsbereich.

  2. Suchen Sie auf der Übersichtsseite des Azure Machine Learning-Arbeitsbereichs nach dem Namen der Key Vault-Instanz.

    Screenshot: Kopieren des Namens der Key Vault-Instanz

  3. Laden Sie auf Ihrem Entwicklungscomputer die Zertifikate in Key Vault hoch. Ersetzen Sie <subscriptionId> und <keyvaultname> durch Ihre Ressourceninformationen.

    c:\source\IoTEdgeAndMlSample\CreateCertificates\upload-keyvaultcerts.ps1 -SubscriptionId <subscriptionId> -KeyVaultName <keyvaultname>
    
  4. Melden Sie sich bei entsprechender Aufforderung bei Azure an.

  5. Das Skript wird einige Minuten lang ausgeführt, und in der Ausgabe sind die neuen Key Vault-Einträge aufgelistet.

    Screenshot: Ausgabe des Key Vault-Skripts

Registrieren eines IoT Edge-Geräts

Zum Verbinden eines Azure IoT Edge-Geräts mit einem IoT-Hub registrieren wir zuerst ein Gerät im Hub. Wir verwenden die Verbindungszeichenfolge aus der Geräteidentität in der Cloud und nutzen sie zum Konfigurieren der Runtime auf unserem IoT Edge-Gerät. Nachdem ein konfiguriertes Gerät eine Verbindung mit dem Hub hergestellt hat, können wir Module bereitstellen und Nachrichten senden. Wir können auch die Konfiguration des physischen IoT Edge-Geräts ändern, indem wir die entsprechende Geräteidentität in IoT Hub ändern.

Für dieses Tutorial registrieren wir die neue Geräteidentität mithilfe von Visual Studio Code. Sie können diese Schritte auch im Azure-Portal oder in der Azure CLI ausführen. Sorgen Sie unabhängig von der ausgewählten Methode dafür, dass Sie die Geräteverbindungszeichenfolge für Ihr IoT Edge-Gerät abrufen. Die Geräteverbindungszeichenfolge finden Sie im Azure-Portal auf der Detailseite für das Gerät.

  1. Öffnen Sie Visual Studio Code auf Ihrem Entwicklungscomputer.

  2. Erweitern Sie in der Explorer-Ansicht von Visual Studio Code den Bereich Azure IoT Hub.

  3. Klicken Sie auf die Auslassungspunkte, und wählen Sie IoT Edge-Gerät erstellen aus.

  4. Geben Sie dem Gerät einen Namen. Der Einfachheit halber verwenden wir den Namen aaTurbofanEdgeDevice, da diesen an den Anfang der Geräteliste sortiert wird.

  5. Das neue Gerät wird in der Geräteliste angezeigt.

    Screenshot: Ansicht des Geräts im Visual Studio Code-Explorer

Bereitstellen eines virtuellen Azure-Computers

Wir verwenden einen virtuellen Ubuntu 18.04 LTS-Computer mit installierter und konfigurierter Azure IoT Edge-Runtime. Die Bereitstellung verwendet eine Azure Resource Manager-Vorlage, die im Projektrepository iotedge-vm-deploy verwaltet wird. Sie stellt das IoT Edge-Gerät bereit, das Sie im vorherigen Schritt registriert haben, und verwendet dafür die von Ihnen in der Vorlage angegebene Verbindungszeichenfolge.

Sie können den virtuellen Computer über das Azure-Portal oder Azure CLI bereitstellen. Wir zeigen die Azure-Portalschritte an. Weitere Informationen finden Sie unter Ausführen von Azure IoT Edge auf virtuellen Ubuntu-Computern.

Bereitstellen mithilfe der Schaltfläche „In Azure bereitstellen“

  1. Wenn Sie die ARM-Vorlage iotedge-vm-deploy zum Bereitstellen Ihres virtuellen Ubuntu 18.04 LTS-Computers verwenden möchten, klicken Sie auf die folgende Schaltfläche:

    Schaltfläche „In Azure bereitstellen“ für „iotedge-vm-deploy“

  2. Füllen Sie im neu gestarteten Fenster die verfügbaren Formularfelder aus.

    Feld BESCHREIBUNG
    Abonnement Das aktive Azure-Abonnement, in dem der virtuelle Computer bereitgestellt werden soll.
    Ressourcengruppe Eine vorhandene oder neu erstellte Ressourcengruppe, die den virtuellen Computer und die ihm zugeordneten Ressourcen enthalten soll.
    Präfix der DNS-Bezeichnung Ein erforderlicher Wert Ihrer Wahl, der dem Hostnamen des virtuellen Computers vorangestellt werden soll.
    Benutzername des Administrators Ein Benutzername, der Rootberechtigungen für die Bereitstellung erhält.
    Verbindungszeichenfolge für das Gerät Eine Geräte-Verbindungszeichenfolge für ein Gerät, das in Ihrem vorgesehenen IoT Hub erstellt wurde.
    VM-Größe Die Größe des bereitzustellenden virtuellen Computers
    Ubuntu-Betriebssystemversion Die Version des Ubuntu-Betriebssystems, die auf dem virtuellen Basiscomputer installiert werden soll.
    Location Die geografische Region, in der der virtuelle Computer bereitgestellt werden soll. Dieser Wert wird standardmäßig auf den Speicherort der ausgewählten Ressourcengruppe festgelegt.
    Authentifizierungstyp Wählen Sie je nach Ihrer Einstellung sshPublicKey oder password aus.
    Administratorkennwort oder Schlüssel Der Wert des öffentlichen SSH-Schlüssels oder der Wert des Kennworts, je nach der Auswahl des Authentifizierungstyps.
  3. Wenn alle Felder ausgefüllt sind, aktivieren Sie unten auf der Seite das Kontrollkästchen zum Akzeptieren der Bedingungen. Wählen Sie dann Überprüfen + erstellen und Erstellen aus, um mit der Bereitstellung zu beginnen.

  4. Navigieren Sie im Azure-Portal zu Ihrem virtuellen Computer. Sie finden ihn über Ihre Ressourcengruppe oder, indem Sie auf der Landing Page des Portals unter Azure-Dienste die Option Virtuelle Computer auswählen.

  5. Notieren Sie sich den DNS-Namen Ihres virtuellen Computers. Sie benötigen ihn für die Anmeldung bei Ihrem virtuellen Computer.

Herstellen einer Verbindung mit Ihrem IoT Edge-Gerät

  1. Öffnen Sie eine Eingabeaufforderung, und melden Sie sich mit dem folgenden Befehl bei Ihrem virtuellen Computer an. Geben Sie ihre eigenen Informationen für „Benutzername“ und „DNS-Name“ ein, die auf dem vorherigen Abschnitt basieren.

    ssh <adminUsername>@<DNS_name>
    
  2. Geben Sie yes ein, und drücken Sie die EINGABETASTE, wenn Sie zur Bestätigung der Echtheit des Hosts aufgefordert werden.

  3. Geben Sie bei entsprechender Aufforderung Ihr Kennwort an.

  4. Ubuntu zeigt eine Begrüßungsnachricht und dann eine Aufforderung wie diese <username>@<machinename>:~$ an.

Herunterladen von Key Vault-Zertifikaten

Weiter oben in diesem Artikel haben Sie Zertifikate in Key Vault hochgeladen, um sie für Ihr IoT Edge-Gerät und Ihr nachgeschaltetes Gerät zur Verfügung zu stellen. Das nachgeschaltete Gerät verwendet das IoT Edge-Gerät als Gateway für die Kommunikation mit IoT Hub.

Das nachgeschaltete Gerät wird später in diesem Tutorial behandelt. In diesem Abschnitt laden Sie die Zertifikate auf das IoT Edge-Gerät herunter.

  1. Melden Sie sich über die SSH-Sitzung auf dem virtuellen Linux-Computer mit der Azure CLI an Azure an.

    az login
    
  2. Sie werden aufgefordert, die Seite einer Microsoft-Geräteanmeldung in einem Browser zu öffnen und einen eindeutigen Code anzugeben. Sie können diese Schritte auf Ihrem lokalen Computer ausführen. Schließen Sie das Browserfenster, wenn Sie die Authentifizierung abgeschlossen haben.

  3. Wenn die Authentifizierung erfolgreich war, wird der virtuelle Linux-Computer angemeldet, und Ihre Azure-Abonnements werden aufgelistet.

  4. Legen Sie das Azure-Abonnement fest, das Sie für Azure CLI-Befehle verwenden möchten.

    az account set --subscription <subscriptionId>
    
  5. Erstellen Sie auf der VM ein Verzeichnis für die Zertifikate.

    sudo mkdir /edgeMlCertificates
    
  6. Laden Sie die Zertifikate herunter, die Sie im Schlüsseltresor gespeichert haben: „new-edge-device-full-chain.cert.pem“, „new-edge-device.key.pem“ und „azure-iot-test-only.root.ca.cert.pem“.

    key_vault_name="<key vault name>"
    sudo az keyvault secret download --vault-name $key_vault_name --name new-edge-device-full-chain-cert-pem -f /edgeMlCertificates/new-edge-device-full-chain.cert.pem
    sudo az keyvault secret download --vault-name $key_vault_name --name new-edge-device-key-pem -f /edgeMlCertificates/new-edge-device.key.pem
    sudo az keyvault secret download --vault-name $key_vault_name --name azure-iot-test-only-root-ca-cert-pem -f /edgeMlCertificates/azure-iot-test-only.root.ca.cert.pem
    

Aktualisieren der Konfiguration für das IoT Edge-Gerät

Für die IoT Edge-Runtime wird die Datei „/etc/iotedge/config.yaml“ genutzt, um die Konfiguration zu speichern. Wir müssen in dieser Datei zwei Arten von Informationen aktualisieren:

  • Zertifikate: die Zertifikate, die für die Verbindungsherstellung mit nachgeschalteten Geräten verwendet werden
  • Hostname: der vollqualifizierte Domänenname (FQDN) des IoT Edge-Geräts der VM

Aktualisieren Sie die Zertifikate und den Hostnamen durch direkte Bearbeitung der Datei „config.yaml“.

  1. Öffnen Sie die Datei „config.yaml“.

    sudo nano /etc/iotedge/config.yaml
    
  2. Aktualisieren Sie den Abschnitt „certificates“ der Datei „config.yaml“, indem Sie das vorangestellte Zeichen # entfernen und den Pfad festlegen, sodass die Datei wie im folgenden Beispiel aussieht:

    certificates:
      device_ca_cert: "/edgeMlCertificates/new-edge-device-full-chain.cert.pem"
      device_ca_pk: "/edgeMlCertificates/new-edge-device.key.pem"
      trusted_ca_certs: "/edgeMlCertificates/azure-iot-test-only.root.ca.cert.pem"
    

    Stellen Sie sicher, dass der Zeile certificates: kein Leerzeichen vorangestellt ist und dass die geschachtelten Zertifikate jeweils um zwei Leerstellen eingerückt sind.

    Wenn Sie in Nano mit der rechten Maustaste klicken, wird der Inhalt Ihrer Zwischenablage an der aktuellen Cursorposition eingefügt. Verwenden Sie die Pfeiltasten auf der Tastatur, um zu der Zeichenfolge zu navigieren, die ersetzt werden soll. Löschen Sie die Zeichenfolge, und klicken Sie dann mit der rechten Maustaste, um den Inhalt aus dem Puffer einzufügen.

  3. Navigieren Sie im Azure-Portal zu Ihrem virtuellen Computer. Kopieren Sie den DNS-Namen (FQDN des Computers) aus dem Abschnitt Übersicht.

  4. Fügen Sie den FQDN in den Abschnitt „hostname“ der Datei „config.yaml“ ein. Stellen Sie sicher, dass der Name ausschließlich Kleinbuchstaben enthält.

    hostname: '<machinename>.<region>.cloudapp.azure.com'
    
  5. Speichern und schließen Sie die Datei mit STRG+X, Y und EINGABETASTE.

  6. Starten Sie den IoT Edge-Daemon neu.

    sudo systemctl restart iotedge
    
  7. Überprüfen Sie den Status des IoT Edge-Daemons. Geben Sie nach Ausführung des Befehls zum Beenden :q ein.

    systemctl status iotedge
    

Problembehandlung

Falls im Statusbereich Fehler angezeigt werden (farbiger Text mit dem Präfix „ERROR“), untersuchen Sie die Daemonprotokolle, um ausführliche Fehlerinformationen zu erhalten.

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

Weitere Informationen zum Beheben von Fehlern finden Sie auf der Seite Problembehandlung.

Bereinigen von Ressourcen

Dieses Tutorial ist Teil einer Reihe, in der jeder Artikel auf den Schritten aufbaut, die jeweils im vorherigen Artikel ausgeführt wurden. Warten Sie mit dem Bereinigen von Ressourcen, bis Sie das letzte Tutorial abgeschlossen haben.

Nächste Schritte

Wir haben die Konfiguration einer Azure-VM als transparentes IoT Edge-Gateway abgeschlossen. Zunächst haben wir Testzertifikate generiert, die wir in Key Vault hochgeladen haben. Anschließend haben wir ein Skript und eine Resource Manager-Vorlage verwendet, um die VM mit dem Image „Ubuntu Server 16.04 LTS + Azure IoT Edge-Runtime“ aus dem Azure Marketplace bereitzustellen. Als die VM eingerichtet und betriebsbereit war, haben wir über SSH eine Verbindung hergestellt. Danach haben wir uns bei Azure angemeldet und Zertifikate aus Key Vault heruntergeladen. Wir haben die Datei „config.yaml“ aktualisiert, um verschiedene Aspekte der IoT Edge-Runtimekonfiguration zu aktualisieren.

Fahren Sie mit dem nächsten Artikel fort, um IoT Edge-Module zu erstellen.