Delen via


Zelfstudie: Een Azure IoT Edge-apparaat configureren

Van toepassing op:ja-pictogram IoT Edge 1.1

Belangrijk

Het einde van de ondersteuningsdatum voor IoT Edge 1.1 is 13 december 2022. Controleer de levenscyclus van Microsoft-producten voor informatie over hoe dit product, deze service, technologie of API wordt ondersteund. Zie IoT Edge bijwerken voor meer informatie over het bijwerken naar de nieuwste versie van IoT Edge.

In dit artikel configureren we een virtuele Azure-machine waarop Linux wordt uitgevoerd als een Azure IoT Edge-apparaat dat fungeert als een transparante gateway. Met een transparante gatewayconfiguratie kunnen apparaten via de gateway verbinding maken met Azure IoT Hub zonder te weten dat de gateway bestaat. Tegelijkertijd is een gebruiker die communiceert met de apparaten in IoT Hub niet op de hoogte van het tussenliggende gatewayapparaat. Uiteindelijk voegen we edge-analyses toe aan ons systeem door IoT Edge-modules toe te voegen aan de transparante gateway.

Notitie

De concepten in deze zelfstudie zijn van toepassing op alle versies van IoT Edge, maar het voorbeeldapparaat dat u maakt om het scenario uit te proberen, voert IoT Edge versie 1.1 uit.

De stappen in dit artikel worden doorgaans uitgevoerd door een cloudontwikkelaar.

In deze sectie van de zelfstudie leert u het volgende:

  • Maak certificaten zodat uw gatewayapparaat veilig verbinding kan maken met uw downstreamapparaten.
  • Maak een IoT Edge-apparaat.
  • Maak een virtuele Azure-machine om uw IoT Edge-apparaat te simuleren.

Benodigdheden

Dit artikel maakt deel uit van een reeks voor een zelfstudie over het gebruik van Azure Machine Learning in IoT Edge. Elk artikel in de reeks bouwt voort op het werk in het vorige artikel. Als u rechtstreeks bij dit artikel bent aangekomen, raadpleegt u het eerste artikel in de reeks.

Certificaten maken

Om een apparaat als gateway te laten functioneren, moet het veilig verbinding maken met downstreamapparaten. Met IoT Edge kunt u een PKI (Public Key Infrastructure) gebruiken om beveiligde verbindingen tussen apparaten in te stellen. In dit geval staat u een downstream IoT-apparaat toe om verbinding te maken met een IoT Edge-apparaat dat fungeert als een transparante gateway. Om een redelijke beveiliging te behouden, moet het downstreamapparaat de identiteit van het IoT Edge-apparaat bevestigen. Zie de gebruiksgegevens van Azure IoT Edge-certificaten voor meer informatie over hoe IoT Edge-apparaten certificaten gebruiken.

In deze sectie maken we de zelfondertekende certificaten met behulp van een Docker-image dat we vervolgens bouwen en uitvoeren. We kozen ervoor om een Docker-image te gebruiken om deze stap te voltooien, omdat er minder stappen nodig zijn om de certificaten op de Windows-ontwikkelmachine te maken. Om te begrijpen wat we hebben geautomatiseerd met de Docker-image, zie Democertificaten maken om IoT Edge-apparaatfuncties te testen.

  1. Meld u aan bij uw ontwikkel-VM.

  2. Maak een nieuwe map met het pad en de naam c:\edgeCertificates.

  3. Als het nog niet actief is, start Docker voor Windows vanuit het menu Start van Windows.

  4. Open Visual Studio Code.

  5. Selecteer Bestand>Map openen en selecteer vervolgens C:\source\IoTEdgeAndMlSample\CreateCertificates.

  6. Klik in het deelvenster Explorer met de rechtermuisknop op dockerfile en selecteer Build Image.

  7. Accepteer in het dialoogvenster de standaardwaarde voor de naam en tag van de image: createcertificates: latest.

    Schermopname van het maken van certificaten in Visual Studio Code.

  8. Wacht tot het bouwen is voltooid.

    Notitie

    Mogelijk ziet u een waarschuwing over een ontbrekende openbare sleutel. Het is veilig om deze waarschuwing te negeren. Op dezelfde manier ziet u een beveiligingswaarschuwing waarin u wordt aangeraden om machtigingen voor uw afbeelding te controleren of opnieuw in te stellen. Dit is veilig te negeren voor deze afbeelding.

  9. Voer in het Visual Studio Code-terminalvenster de container createcertificates uit.

    docker run --name createcertificates --rm -v c:\edgeCertificates:/edgeCertificates createcertificates /edgeCertificates
    
  10. Docker vraagt om toegang tot het c:\ -station. Selecteer Deel het.

  11. Geef uw referenties op wanneer u hierom wordt gevraagd.

  12. Nadat de container is uitgevoerd, controleert u op de volgende bestanden in c:\edgeCertificates:

    • 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

Certificaten uploaden naar Azure Key Vault

Om onze certificaten veilig op te slaan en toegankelijk te maken vanaf meerdere apparaten, uploaden we de certificaten naar Azure Key Vault. Zoals u in de voorgaande lijst kunt zien, hebben we twee typen certificaatbestanden: PFX en PEM. We behandelen het PFX-bestand als Key Vault-certificaten die moeten worden geüpload naar Key Vault. De PEM-bestanden zijn tekst zonder opmaak en we behandelen ze als Key Vault-geheimen. We zullen het Key Vault-exemplaar gebruiken dat is gekoppeld aan de Azure Machine Learning-werkruimte die we hebben gemaakt door de Jupyter-notebooks uit te voeren .

  1. Ga vanuit Azure Portal naar uw Azure Machine Learning-werkruimte.

  2. Zoek op de overzichtspagina van de Machine Learning-werkruimte de naam voor Key Vault.

    Schermopname van het kopiëren van de naam van de sleutelkluis.

  3. Upload de certificaten op uw ontwikkelcomputer naar Key Vault. Vervang <subscriptionId> en <keyvaultname> door uw resourcegegevens.

    c:\source\IoTEdgeAndMlSample\CreateCertificates\upload-keyvaultcerts.ps1 -SubscriptionId <subscriptionId> -KeyVaultName <keyvaultname>
    
  4. Meld u aan bij Azure als u hierom wordt gevraagd.

  5. Het script wordt enkele minuten uitgevoerd met uitvoer waarin de nieuwe Key Vault-vermeldingen worden vermeld.

    Schermopname van key Vault-scriptuitvoer.

Een IoT Edge-apparaat registreren

Als u een Azure IoT Edge-apparaat wilt verbinden met een IoT-hub, registreren we eerst een apparaat in de hub. We nemen de verbindingsreeks van de apparaat-id in de cloud en gebruiken deze om de runtime op ons IoT Edge-apparaat te configureren. Nadat een geconfigureerd apparaat verbinding heeft gemaakt met de hub, kunnen we modules implementeren en berichten verzenden. We kunnen ook de configuratie van het fysieke IoT Edge-apparaat wijzigen door de bijbehorende apparaat-id in IoT Hub te wijzigen.

Voor deze zelfstudie registreren we de nieuwe apparaat-id met behulp van Visual Studio Code. U kunt deze stappen ook uitvoeren met behulp van Azure Portal of de Azure CLI. Zorg ervoor dat u de verbindingsreeks voor uw IoT Edge-apparaat verkrijgt, ongeacht welke methode u kiest. De verbindingsreeks voor het apparaat vindt u op de detailpagina van uw apparaat in Azure Portal.

  1. Open Visual Studio Code op uw ontwikkelcomputer.

  2. Vouw het Azure IoT Hub-frame uit vanuit de Visual Studio Code Explorer-weergave .

  3. Selecteer het beletselteken en klik op IoT Edge-apparaat maken.

  4. Geef het apparaat een naam. Voor het gemak gebruiken we de naam aaTurbofanEdgeDevice , zodat deze boven aan de vermelde apparaten wordt gesorteerd.

  5. Het nieuwe apparaat wordt weergegeven in de lijst met apparaten.

    Schermopname van een weergave van het apparaat in Visual Studio Code Explorer.

Een virtuele Azure-machine implementeren

We gebruiken een virtuele Ubuntu 18.04 LTS-machine waarop de Azure IoT Edge-runtime is geïnstalleerd en geconfigureerd. De implementatie maakt gebruik van een Azure Resource Manager-sjabloon die wordt onderhouden in de projectopslagplaats iotedge-vm-deploy . Hiermee wordt het in de vorige stap geregistreerde IoT Edge-apparaat geconfigureerd met behulp van de verbindingsreeks die u in de sjabloon opgeeft.

U kunt de virtuele machine implementeren met behulp van Azure Portal of Azure CLI. De stappen in Azure Portal worden weergegeven. Zie Azure IoT Edge uitvoeren op virtuele Ubuntu-machines voor meer informatie.

Implementeren met de knop Implementeren in Azure

  1. Als u de iotedge-vm-deploy ARM-sjabloon wilt gebruiken om uw virtuele Ubuntu 18.04 LTS-machine te implementeren, klikt u op de onderstaande knop:

    Implementeren in Azure Button voor iotedge-vm-deploy

  2. Vul in het zojuist geopende venster de beschikbare formuliervelden in.

    Veld Beschrijving
    Abonnement Het actieve Azure-abonnement om de virtuele machine in te implementeren.
    Resourcegroep Een bestaande of nieuw gemaakte resourcegroep die de virtuele machine en de bijbehorende resources bevat.
    DNS-labelvoorvoegsel Een vereiste waarde van uw keuze die wordt gebruikt voor het voorvoegsel van de hostnaam van de virtuele machine.
    Gebruikersnaam van beheerder Een gebruikersnaam, die root-rechten bij de implementatie krijgt.
    Apparaatverbindingsreeks Een apparaatverbindingsreeks voor een apparaat dat is gemaakt in uw beoogde IoT Hub.
    VM-grootte De grootte van de virtuele machine die moet worden geïmplementeerd
    Versie van Ubuntu-besturingssysteem De versie van het Ubuntu-besturingssysteem dat moet worden geïnstalleerd op de virtuele basismachine.
    Plaats De geografische regio waarop de virtuele machine moet worden geïmplementeerd, wordt standaard ingesteld op de locatie van de geselecteerde resourcegroep.
    Verificatietype Kies sshPublicKey of wachtwoord , afhankelijk van uw voorkeur.
    Beheerderswachtwoord of -sleutel De waarde van de openbare SSH-sleutel of de waarde van het wachtwoord, afhankelijk van de keuze van het verificatietype.
  3. Wanneer alle velden zijn ingevuld, selecteert u het selectievakje onderaan de pagina om de voorwaarden te accepteren en kiest u Review + creëren en Creëren om de implementatie te starten.

  4. Navigeer naar uw virtuele machine in Azure Portal. U vindt deze via uw resourcegroep of door virtuele machines te selecteren onder Azure-services op de landingspagina van de portal.

  5. Noteer de DNS-naam van uw virtuele machine. U hebt deze nodig om u aan te melden bij uw virtuele machine.

Verbinding maken met uw IoT Edge-apparaat

  1. Open een opdrachtprompt en gebruik de volgende opdracht om u aan te melden bij uw virtuele machine. Voer uw eigen gegevens in voor gebruikersnaam en DNS-naam op basis van de vorige sectie.

    ssh <adminUsername>@<DNS_name>
    
  2. Wanneer u wordt gevraagd om de echtheid van de host te valideren, voert u ja in en selecteert u Enter.

  3. Geef uw wachtwoord op wanneer u hierom wordt gevraagd.

  4. Ubuntu geeft een welkomstbericht weer en dan ziet u een prompt zoals <username>@<machinename>:~$.

Key Vault-certificaten downloaden

Eerder in dit artikel hebben we certificaten geüpload naar Key Vault om ze beschikbaar te maken voor ons IoT Edge-apparaat en ons downstreamapparaat. Het downstreamapparaat gebruikt het IoT Edge-apparaat als gateway om te communiceren met IoT Hub.

Verderop in de zelfstudie behandelen we het downstreamapparaat. In deze sectie downloadt u de certificaten naar het IoT Edge-apparaat.

  1. Meld u vanuit de SSH-sessie op de virtuele Linux-machine aan bij Azure met de Azure CLI.

    az login
    
  2. U wordt gevraagd een browser te openen naar een aanmeldingspagina van een Microsoft-apparaat en een unieke code op te geven. U kunt deze stappen uitvoeren op uw lokale computer. Sluit het browservenster wanneer u klaar bent met verifiëren.

  3. Wanneer u zich hebt geverifieerd, meldt de Linux-VM zich aan en vermeldt u uw Azure-abonnementen.

  4. Stel het Azure-abonnement in dat u wilt gebruiken voor Azure CLI-opdrachten.

    az account set --subscription <subscriptionId>
    
  5. Maak een map op de VIRTUELE machine voor de certificaten.

    sudo mkdir /edgeMlCertificates
    
  6. Download de certificaten die u hebt opgeslagen in de sleutelkluis: new-edge-device-full-chain.cert.pem, new-edge-device.key.pem en 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
    

De configuratie van het IoT Edge-apparaat bijwerken

De IoT Edge-runtime maakt gebruik van het bestand /etc/iotedge/config.yaml om de configuratie te behouden. We moeten twee stukjes informatie in dit bestand bijwerken:

  • Certificaten: de certificaten die moeten worden gebruikt voor verbindingen die zijn gemaakt met downstreamapparaten
  • Hostnaam: de FQDN (Fully Qualified Domain Name) van het IoT Edge-apparaat van de VM

Werk de certificaten en hostnaam bij door het bestand config.yaml rechtstreeks te bewerken.

  1. Open het bestand config.yaml.

    sudo nano /etc/iotedge/config.yaml
    
  2. Werk de sectie certificaten van het bestand config.yaml bij door de voorloop-# te verwijderen en het pad zo in te stellen dat het bestand eruitziet als in het volgende voorbeeld:

    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"
    

    Zorg ervoor dat de certificaten: regel heeft geen voorafgaande witruimte en dat elk van de geneste certificaten is ingesprongen door twee spaties.

    Als u met de rechtermuisknop in nano klikt, wordt de inhoud van het klembord op de huidige cursorpositie geplakt. Als u de tekenreeks wilt vervangen, gebruikt u de pijlen van het toetsenbord om naar de tekenreeks te gaan die u wilt vervangen, verwijdert u de tekenreeks en klikt u met de rechtermuisknop om uit de buffer te plakken.

  3. Ga in Azure Portal naar uw virtuele machine. Kopieer de DNS-naam (FQDN van de computer) in de sectie Overzicht .

  4. Plak de FQDN in de hostnaamsectie van het config.yml-bestand. Zorg ervoor dat de naam allemaal kleine letters bevat.

    hostname: '<machinename>.<region>.cloudapp.azure.com'
    
  5. Sla het bestand op en sluit het door Ctrl+X, Y en Enter te selecteren.

  6. Start de IoT Edge-daemon opnieuw.

    sudo systemctl restart iotedge
    
  7. Controleer de status van de IoT Edge-daemon. Voer na de opdracht :q in om af te sluiten.

    systemctl status iotedge
    

Problemen oplossen

Als er fouten worden weergegeven (gekleurde tekst voorafgegaan door [ERROR]) in de status, bekijkt u daemonlogboeken voor gedetailleerde foutinformatie.

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

Raadpleeg de pagina voor probleemoplossing voor meer informatie over het oplossen van fouten.

Hulpmiddelen opruimen

Deze zelfstudie maakt deel uit van een set waarin elk artikel voortbouwt op het werk dat in de vorige artikelen is uitgevoerd. Wacht totdat u de laatste tutorial hebt voltooid om resources schoon te maken.

Volgende stappen

We hebben zojuist de configuratie van een Virtuele Azure-machine voltooid als een transparante IoT Edge-gateway. We zijn begonnen met het genereren van testcertificaten die we hebben geüpload naar Key Vault. Vervolgens hebben we een script- en Resource Manager-sjabloon gebruikt om de VIRTUELE machine te implementeren met de Ubuntu Server 16.04 LTS + Azure IoT Edge-runtime-installatiekopie van Azure Marketplace. Nu de VIRTUELE machine actief is, hebben we verbinding gemaakt via SSH. Vervolgens hebben we ons aangemeld bij Azure en certificaten gedownload van Key Vault. We hebben verschillende updates uitgevoerd voor de configuratie van de IoT Edge-runtime door het bestand config.yaml bij te werken.

Ga door naar het volgende artikel om IoT Edge-modules te bouwen.