Udostępnij za pośrednictwem


Samouczek: konfigurowanie urządzenia usługi Azure IoT Edge

Dotyczy: Ikona tak IoT Edge 1.1

Ważne

Data zakończenia wsparcia usługi IoT Edge 1.1 wynosiła 13 grudnia 2022 r. Zapoznaj się z cyklem życia produktów firmy Microsoft, aby uzyskać informacje na temat sposobu obsługi tego produktu lub interfejsu API albo tej usługi lub technologii. Aby uzyskać więcej informacji na temat aktualizowania do najnowszej wersji usługi IoT Edge, zobacz Aktualizowanie usługi IoT Edge.

W tym artykule skonfigurujemy maszynę wirtualną platformy Azure z systemem Linux jako urządzenie usługi Azure IoT Edge, które działa jako przezroczysta brama. Konfiguracja przezroczystej bramy umożliwia urządzeniom łączenie się z usługą Azure IoT Hub za pośrednictwem bramy bez znajomości, że brama istnieje. Jednocześnie użytkownik korzystający z urządzeń w usłudze IoT Hub nie zna pośredniego urządzenia bramy. Ostatecznie dodamy analizę krawędzi do naszego systemu, dodając moduły usługi IoT Edge do przezroczystej bramy.

Uwaga

Pojęcia z tego samouczka dotyczą wszystkich wersji usługi IoT Edge, ale przykładowe urządzenie utworzone w celu wypróbowania scenariusza uruchamia usługę IoT Edge w wersji 1.1.

Kroki opisane w tym artykule są zwykle wykonywane przez dewelopera rozwiązań w chmurze.

W tej sekcji samouczka dowiesz się, jak wykonywać następujące działania:

  • Utwórz certyfikaty, aby umożliwić urządzeniu bramy bezpieczne łączenie się z urządzeniami podrzędnym.
  • Utwórz urządzenie usługi IoT Edge.
  • Utwórz maszynę wirtualną platformy Azure, aby symulować urządzenie usługi IoT Edge.

Wymagania wstępne

Ten artykuł jest częścią serii samouczka dotyczącego korzystania z usługi Azure Machine Learning w usłudze IoT Edge. Każdy artykuł z serii opiera się na pracy w poprzednim artykule. Jeśli dotrzesz bezpośrednio do tego artykułu, zapoznaj się z pierwszym artykułem z serii.

Tworzenie certyfikatów

Aby urządzenie działało jako brama, musi bezpiecznie łączyć się z urządzeniami podrzędnym. Za pomocą usługi IoT Edge można użyć infrastruktury kluczy publicznych (PKI), aby skonfigurować bezpieczne połączenia między urządzeniami. W takim przypadku zezwalamy podrzędnym urządzeniu IoT na łączenie się z urządzeniem usługi IoT Edge działającym jako przezroczysta brama. Aby zachować rozsądne zabezpieczenia, urządzenie podrzędne powinno potwierdzić tożsamość urządzenia usługi IoT Edge. Aby uzyskać więcej informacji na temat używania certyfikatów przez urządzenia usługi IoT Edge, zobacz Szczegóły użycia certyfikatu usługi Azure IoT Edge.

W tej sekcji utworzymy certyfikaty z podpisem własnym przy użyciu obrazu platformy Docker, który następnie utworzymy i uruchomimy. Wybraliśmy użycie obrazu platformy Docker do wykonania tego kroku, ponieważ zmniejsza liczbę kroków wymaganych do utworzenia certyfikatów na komputerze deweloperskim z systemem Windows. Aby zrozumieć, co zautomatyzowaliśmy za pomocą obrazu platformy Docker, zobacz Tworzenie certyfikatów demonstracyjnych w celu przetestowania funkcji urządzeń usługi IoT Edge.

  1. Zaloguj się do maszyny wirtualnej dewelopera.

  2. Utwórz nowy folder ze ścieżką i nazwą c:\edgeCertificates.

  3. Jeśli nie jest jeszcze uruchomiony, uruchom platformę Docker dla systemu Windows z menu Start systemu Windows.

  4. Otwórz Visual Studio Code.

  5. Wybierz pozycję Plik>Otwórz folder, a następnie wybierz pozycję C:\source\IoTEdgeAndMlSample\CreateCertificates.

  6. W okienku Eksplorator kliknij prawym przyciskiem myszy plik dockerfile i wybierz polecenie Kompiluj obraz.

  7. W oknie dialogowym zaakceptuj wartość domyślną nazwy obrazu i tagu: createcertificates: latest.

    Zrzut ekranu przedstawiający tworzenie certyfikatów w programie Visual Studio Code.

  8. Poczekaj na zakończenie kompilacji.

    Uwaga

    Może zostać wyświetlone ostrzeżenie dotyczące brakującego klucza publicznego. Można bezpiecznie zignorować to ostrzeżenie. Podobnie zobaczysz ostrzeżenie o zabezpieczeniach, które zaleca sprawdzenie lub zresetowanie uprawnień na obrazie, co jest bezpieczne do ignorowania dla tego obrazu.

  9. W oknie terminalu programu Visual Studio Code uruchom kontener createcertificates.

    docker run --name createcertificates --rm -v c:\edgeCertificates:/edgeCertificates createcertificates /edgeCertificates
    
  10. Platforma Docker wyświetli monit o dostęp do dysku c:\ . Wybierz pozycję Udostępnij.

  11. Po wyświetleniu monitu podaj swoje poświadczenia.

  12. Po zakończeniu działania kontenera sprawdź następujące pliki w folderze 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

Przekazywanie certyfikatów do usługi Azure Key Vault

Aby bezpiecznie przechowywać nasze certyfikaty i udostępnić je z wielu urządzeń, przekażemy certyfikaty do usługi Azure Key Vault. Jak widać na powyższej liście, mamy dwa typy plików certyfikatów: PFX i PEM. Plik PFX będzie traktowany jako certyfikaty usługi Key Vault, które mają zostać przekazane do usługi Key Vault. Pliki PEM są zwykłym tekstem i traktujemy je jako wpisy tajne usługi Key Vault. Użyjemy wystąpienia usługi Key Vault skojarzonego z obszarem roboczym usługi Azure Machine Learning utworzonym przez uruchomienie notesów Jupyter.

  1. W witrynie Azure Portal przejdź do obszaru roboczego usługi Azure Machine Learning.

  2. Na stronie przeglądu obszaru roboczego usługi Machine Learning znajdź nazwę usługi Key Vault.

    Zrzut ekranu przedstawiający kopiowanie nazwy magazynu kluczy.

  3. Na komputerze deweloperskim przekaż certyfikaty do usługi Key Vault. Zastąp wartości subscriptionId> i <keyvaultname> informacjami o zasobie.<

    c:\source\IoTEdgeAndMlSample\CreateCertificates\upload-keyvaultcerts.ps1 -SubscriptionId <subscriptionId> -KeyVaultName <keyvaultname>
    
  4. Jeśli zostanie wyświetlony monit, zaloguj się do platformy Azure.

  5. Skrypt zostanie uruchomiony przez kilka minut z danymi wyjściowymi zawierającymi listę nowych wpisów usługi Key Vault.

    Zrzut ekranu przedstawiający dane wyjściowe skryptu usługi Key Vault.

Rejestracja urządzenia usługi IoT Edge

Aby połączyć urządzenie usługi Azure IoT Edge z centrum IoT Hub, najpierw zarejestrujemy urządzenie w centrum. Bierzemy parametry połączenia z tożsamości urządzenia w chmurze i używamy jej do konfigurowania środowiska uruchomieniowego na urządzeniu usługi IoT Edge. Po nawiązaniu połączenia ze skonfigurowanym urządzeniem z centrum możemy wdrożyć moduły i wysyłać komunikaty. Możemy również zmienić konfigurację fizycznego urządzenia usługi IoT Edge, zmieniając jego odpowiednią tożsamość urządzenia w usłudze IoT Hub.

W tym samouczku zarejestrujemy nową tożsamość urządzenia przy użyciu programu Visual Studio Code. Te kroki można również wykonać przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure. Niezależnie od wybranej metody upewnij się, że uzyskasz urządzenie parametry połączenia urządzenia usługi IoT Edge. Parametry połączenia urządzenia można znaleźć na stronie szczegółów urządzenia w witrynie Azure Portal.

  1. Na komputerze deweloperskim otwórz program Visual Studio Code.

  2. Rozwiń ramkę usługi Azure IoT Hub z widoku Eksploratora programu Visual Studio Code.

  3. Wybierz wielokropek, a następnie wybierz pozycję Utwórz urządzenie usługi IoT Edge.

  4. Nadaj urządzeniu nazwę. Dla wygody użyjemy nazwy aaTurbofanEdgeDevice , aby posortować ją na początku wymienionych urządzeń.

  5. Nowe urządzenie zostanie wyświetlone na liście urządzeń.

    Zrzut ekranu przedstawiający widok urządzenia w Eksploratorze programu Visual Studio Code.

Wdrażanie maszyny wirtualnej platformy Azure

Używamy maszyny wirtualnej z systemem Ubuntu 18.04 LTS z zainstalowanym i skonfigurowanym środowiskiem uruchomieniowym usługi Azure IoT Edge. Wdrożenie używa szablonu usługi Azure Resource Manager przechowywanego w repozytorium projektu iotedge-vm-deploy . Aprowizuje ono urządzenie usługi IoT Edge zarejestrowane w poprzednim kroku przy użyciu parametry połączenia podanego w szablonie.

Maszynę wirtualną można wdrożyć przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure. Zostaną wyświetlone kroki witryny Azure Portal. Aby uzyskać więcej informacji, zobacz Run Azure IoT Edge on Ubuntu Virtual Machines (Uruchamianie usługi Azure IoT Edge na maszynach wirtualnych z systemem Ubuntu).

Wdrażanie przy użyciu przycisku Wdróż na platformie Azure

  1. Aby wdrożyć maszynę wirtualną z systemem Ubuntu 18.04 LTS przy użyciu iotedge-vm-deploy szablonu usługi ARM, kliknij poniższy przycisk:

    Przycisk Wdrażanie na platformie Azure dla szablonu iotedge-vm-deploy

  2. W nowo uruchomionym oknie wypełnij dostępne pola formularza.

    Pole opis
    Subskrypcja Aktywna subskrypcja platformy Azure do wdrożenia maszyny wirtualnej.
    Grupa zasobów: Istniejąca lub nowo utworzona grupa zasobów zawierająca maszynę wirtualną i skojarzone z nią zasoby.
    Prefiks etykiety DNS Wymagana wartość wybranej wartości służy do prefiksu nazwy hosta maszyny wirtualnej.
    Nazwa użytkownika administratora Nazwa użytkownika, która będzie udostępniana uprawnienia główne we wdrożeniu.
    Parametry połączenia urządzenia Urządzenie parametry połączenia dla urządzenia utworzonego w ramach zamierzonego centrum IoT Hub.
    Rozmiar maszyny wirtualnej Rozmiar maszyny wirtualnej do wdrożenia
    Wersja systemu operacyjnego Ubuntu Wersja systemu operacyjnego Ubuntu, która ma być zainstalowana na podstawowej maszynie wirtualnej.
    Lokalizacja Region geograficzny, w którym ma zostać wdrożona maszyna wirtualna, ta wartość jest domyślnie ustawiona na lokalizację wybranej grupy zasobów.
    Typ uwierzytelnienia Wybierz pozycję sshPublicKey lub hasło w zależności od preferencji.
    Hasło lub klucz administratora Wartość klucza publicznego SSH lub wartość hasła w zależności od wybranego typu uwierzytelniania.
  3. Po wypełnieniu wszystkich pól zaznacz pole wyboru w dolnej części strony, aby zaakceptować warunki, a następnie wybierz pozycję Przejrzyj i utwórz, aby rozpocząć wdrażanie.

  4. Przejdź do maszyny wirtualnej w witrynie Azure Portal. Możesz ją znaleźć za pośrednictwem grupy zasobów lub wybierając pozycję Maszyny wirtualne w obszarze Usługi platformy Azure na stronie docelowej portalu.

  5. Zanotuj nazwę DNS maszyny wirtualnej. Będzie on potrzebny do zalogowania się do maszyny wirtualnej.

Nawiązywanie połączenia z urządzeniem usługi IoT Edge

  1. Otwórz wiersz polecenia i użyj następującego polecenia, aby zalogować się do maszyny wirtualnej. Wprowadź własne informacje dotyczące nazwy użytkownika i nazwy DNS na podstawie poprzedniej sekcji.

    ssh <adminUsername>@<DNS_name>
    
  2. Po wyświetleniu monitu o zweryfikowanie autentyczności hosta wprowadź wartość tak i wybierz Enter.

  3. Po wyświetleniu monitu podaj hasło.

  4. W systemie Ubuntu zostanie wyświetlony komunikat powitalny, a następnie powinien zostać wyświetlony monit podobny do <username>@<machinename>:~$.

Pobieranie certyfikatów usługi Key Vault

Wcześniej w tym artykule przekazaliśmy certyfikaty do usługi Key Vault, aby udostępnić je urządzeniu usługi IoT Edge i naszemu urządzeniu podrzędnym. Urządzenie podrzędne używa urządzenia usługi IoT Edge jako bramy do komunikowania się z usługą IoT Hub.

W dalszej części tego samouczka zajmiemy się urządzeniem podrzędnym. W tej sekcji pobierz certyfikaty na urządzenie usługi IoT Edge.

  1. Z poziomu sesji SSH na maszynie wirtualnej z systemem Linux zaloguj się do platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure.

    az login
    
  2. Zostanie wyświetlony monit o otwarcie przeglądarki na stronie logowania urządzenia firmy Microsoft i podanie unikatowego kodu. Te kroki można wykonać na komputerze lokalnym. Zamknij okno przeglądarki po zakończeniu uwierzytelniania.

  3. Po pomyślnym uwierzytelnieniu maszyna wirtualna z systemem Linux zaloguje się i wyświetli listę subskrypcji platformy Azure.

  4. Ustaw subskrypcję platformy Azure, która ma być używana dla poleceń interfejsu wiersza polecenia platformy Azure.

    az account set --subscription <subscriptionId>
    
  5. Utwórz katalog na maszynie wirtualnej dla certyfikatów.

    sudo mkdir /edgeMlCertificates
    
  6. Pobierz certyfikaty przechowywane w magazynie kluczy: new-edge-device-full-chain.cert.pem, new-edge-device.key.pem i 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
    

Aktualizowanie konfiguracji urządzenia usługi IoT Edge

Środowisko uruchomieniowe usługi IoT Edge używa pliku /etc/iotedge/config.yaml do utrwalania konfiguracji. Musimy zaktualizować dwa fragmenty informacji w tym pliku:

  • Certyfikaty: certyfikaty do użycia dla połączeń wykonanych z urządzeniami podrzędnymi
  • Nazwa hosta: w pełni kwalifikowana nazwa domeny (FQDN) urządzenia usługi IoT Edge maszyny wirtualnej

Zaktualizuj certyfikaty i nazwę hosta, edytując bezpośrednio plik config.yaml.

  1. Otwórz plik config.yaml.

    sudo nano /etc/iotedge/config.yaml
    
  2. Zaktualizuj sekcję certyfikatów pliku config.yaml, usuwając wiodące i # ustawiając ścieżkę tak, aby plik wyglądał następująco:

    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"
    

    Upewnij się, że certyfikaty: wiersz nie ma wcześniejszego odstępu i że każdy z zagnieżdżonych certyfikatów jest wcięta przez dwie spacje.

    Kliknięcie prawym przyciskiem myszy w elemencie nano spowoduje wklejenie zawartości schowka do bieżącego położenia kursora. Aby zastąpić ciąg, użyj strzałek klawiatury, aby przejść do ciągu, który chcesz zamienić, usunąć ciąg, a następnie kliknij prawym przyciskiem myszy, aby wkleić z buforu.

  3. W witrynie Azure Portal przejdź do maszyny wirtualnej. Skopiuj nazwę DNS (FQDN maszyny) z sekcji Przegląd .

  4. Wklej nazwę FQDN w sekcji nazwa hosta pliku config.yml. Upewnij się, że nazwa jest małą literą.

    hostname: '<machinename>.<region>.cloudapp.azure.com'
    
  5. Zapisz i zamknij plik, wybierając Ctrl+X, Y i Enter.

  6. Uruchom ponownie demona usługi IoT Edge.

    sudo systemctl restart iotedge
    
  7. Sprawdź stan demona usługi IoT Edge. Po poleceniu wprowadź ciąg :q , aby zakończyć.

    systemctl status iotedge
    

Rozwiązywanie problemów

Jeśli widzisz błędy (kolorowy tekst poprzedzony prefiksem "[ERROR]") w stanie, sprawdź dzienniki demona, aby uzyskać szczegółowe informacje o błędzie.

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

Aby uzyskać więcej informacji na temat rozwiązywania problemów, zapoznaj się ze stroną rozwiązywania problemów.

Czyszczenie zasobów

Ten samouczek jest częścią zestawu, w którym każdy artykuł opiera się na pracy wykonanej w poprzednich. Poczekaj, aż ukończysz ostatni samouczek, zaczekaj na wyczyszczenie wszystkich zasobów.

Następne kroki

Właśnie zakończono konfigurowanie maszyny wirtualnej platformy Azure jako przezroczystej bramy usługi IoT Edge. Rozpoczęliśmy od wygenerowania certyfikatów testowych przekazanych do usługi Key Vault. Następnie użyliśmy skryptu i szablonu usługi Resource Manager, aby wdrożyć maszynę wirtualną przy użyciu obrazu środowiska uruchomieniowego systemu Ubuntu Server 16.04 LTS + Azure IoT Edge z witryny Azure Marketplace. Po uruchomieniu i uruchomieniu maszyny wirtualnej nawiązaliśmy połączenie za pośrednictwem protokołu SSH. Następnie zalogowaliśmy się na platformę Azure i pobraliśmy certyfikaty z usługi Key Vault. Wprowadziliśmy kilka aktualizacji konfiguracji środowiska uruchomieniowego usługi IoT Edge, aktualizując plik config.yaml.

Przejdź do następnego artykułu, aby skompilować moduły usługi IoT Edge.