Udostępnij za pośrednictwem


Tworzenie i aprowizowanie IoT Edge dla systemu Linux na urządzeniach z systemem Windows na dużą skalę przy użyciu certyfikatów X.509

Dotyczy ikony:tak IoT Edge 1.1

Ważne

IoT Edge 1.1 data zakończenia wsparcia technicznego 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 IoT Edge, zobacz Update IoT Edge.

Ten artykuł zawiera kompleksowe instrukcje dotyczące automatycznego aprowizowania co najmniej jednego IoT Edge dla systemu Linux na urządzeniach z systemem Windows przy użyciu certyfikatów X.509. Możesz automatycznie aprowizować urządzenia usługi Azure IoT Edge za pomocą usługi Azure IoT Hub device provisioning Service (DPS). Jeśli nie znasz procesu automatycznego aprowizowania, przed kontynuowaniem zapoznaj się z omówieniem aprowizacji .

Zadania są następujące:

  1. Generowanie certyfikatów i kluczy.
  2. Utwórz rejestrację indywidualną dla pojedynczego urządzenia lub rejestracji grupowej dla zestawu urządzeń.
  3. Wdróż maszynę wirtualną z systemem Linux z zainstalowanym środowiskiem uruchomieniowym IoT Edge i połącz ją z IoT Hub.

Korzystanie z certyfikatów X.509 jako mechanizmu zaświadczania to doskonały sposób skalowania produkcji i upraszczania aprowizacji urządzeń. Zazwyczaj certyfikaty X.509 są rozmieszczane w łańcuchu zaufania certyfikatów. Począwszy od certyfikatu głównego z podpisem własnym lub zaufanym, każdy certyfikat w łańcuchu podpisuje następny niższy certyfikat. Ten wzorzec tworzy delegowany łańcuch zaufania z certyfikatu głównego w dół przez każdy certyfikat pośredni do końcowego certyfikatu urządzenia podrzędnego zainstalowanego na urządzeniu.

Wymagania wstępne

Zasoby w chmurze

  • Aktywne centrum IoT
  • Wystąpienie usługi aprowizacji urządzeń IoT Hub na platformie Azure połączone z centrum IoT

Wymagania dotyczące urządzeń

Urządzenie z systemem Windows z następującymi minimalnymi wymaganiami:

  • Wymagania systemowe

    • Windows 10 1/11 (Pro, Enterprise, IoT Enterprise)
    • Windows Server 20191/2022
      1 Windows 10 i minimalna kompilacja systemu Windows Server 2019 17763 z zainstalowanymi wszystkimi bieżącymi aktualizacjami zbiorczymi.
  • Wymagania sprzętowe

    • Minimalna ilość wolnej pamięci: 1 GB
    • Minimalna ilość wolnego miejsca na dysku: 10 GB
  • Obsługa wirtualizacji

  • Obsługa sieci

    • System Windows Server nie jest wyposażony w przełącznik domyślny. Przed wdrożeniem platformy EFLOW na urządzeniu z systemem Windows Server należy utworzyć przełącznik wirtualny. Aby uzyskać więcej informacji, zobacz Tworzenie przełącznika wirtualnego dla systemu Linux w systemie Windows.
    • Wersje programu Windows Desktop są dostarczane z przełącznikiem domyślnym, którego można użyć do instalacji platformy EFLOW. W razie potrzeby możesz utworzyć własny niestandardowy przełącznik wirtualny.

Porada

Jeśli chcesz użyć modułów systemu Linux z przyspieszonym procesorem GPU w usłudze Azure IoT Edge dla systemu Linux w systemie Windows, istnieje kilka opcji konfiguracji, które należy wziąć pod uwagę.

Konieczne będzie zainstalowanie odpowiednich sterowników w zależności od architektury procesora GPU i może być konieczne uzyskanie dostępu do kompilacji niejawnego programu testów systemu Windows. Aby określić wymagania konfiguracyjne i spełnić te wymagania wstępne, zobacz Przyspieszanie procesora GPU dla usługi Azure IoT Edge dla systemu Linux w systemie Windows.

Upewnij się, że nadszedł czas, aby spełnić wymagania wstępne dotyczące przyspieszania procesora GPU. Jeśli podczas instalacji chcesz przyspieszyć procesor GPU, musisz ponownie uruchomić proces instalacji.

Narzędzia dla deweloperów

Do zarządzania urządzeniami IoT Edge można użyć programu PowerShell lub Windows Admin Center. Każde narzędzie ma własne wymagania wstępne:

Jeśli chcesz użyć programu PowerShell, wykonaj następujące kroki, aby przygotować urządzenie docelowe do instalacji usługi Azure IoT Edge dla systemu Linux w systemie Windows i wdrożenia maszyny wirtualnej z systemem Linux:

  1. Ustaw zasady wykonywania na urządzeniu docelowym na wartość AllSigned. Bieżące zasady wykonywania można sprawdzić w wierszu polecenia programu PowerShell z podwyższonym poziomem uprawnień, używając następującego polecenia:

    Get-ExecutionPolicy -List
    

    Jeśli zasady wykonywania elementu local machine nie AllSignedsą , można ustawić zasady wykonywania przy użyciu:

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

Aby uzyskać więcej informacji na temat modułu Azure IoT Edge dla systemu Linux w Windows PowerShell, zobacz dokumentację funkcji programu PowerShell.

Generowanie certyfikatów tożsamości urządzenia

Certyfikat tożsamości urządzenia jest certyfikatem podrzędnym, który łączy się za pośrednictwem łańcucha zaufania certyfikatów z najwyższym certyfikatem urzędu certyfikacji X.509. Certyfikat tożsamości urządzenia musi mieć jego nazwę pospolitą (CN) ustawioną na identyfikator urządzenia, który ma znajdować się w centrum IoT.

Certyfikaty tożsamości urządzenia są używane tylko do aprowizowania urządzenia IoT Edge i uwierzytelniania urządzenia przy użyciu Azure IoT Hub. Nie podpisują certyfikatów, w przeciwieństwie do certyfikatów urzędu certyfikacji, które urządzenie IoT Edge przedstawia modułom lub urządzeniom podrzędnym na potrzeby weryfikacji. Aby uzyskać więcej informacji, zobacz Szczegóły użycia certyfikatu usługi Azure IoT Edge.

Po utworzeniu certyfikatu tożsamości urządzenia powinny istnieć dwa pliki: plik cer lub pem zawierający publiczną część certyfikatu oraz plik cer lub pem z kluczem prywatnym certyfikatu. Jeśli planujesz używać rejestracji grupowej w usłudze DPS, potrzebna jest również publiczna część certyfikatu pośredniego lub głównego urzędu certyfikacji w tym samym łańcuchu zaufania certyfikatów.

Aby skonfigurować automatyczną aprowizację przy użyciu platformy X.509, potrzebne są następujące pliki:

  • Certyfikat tożsamości urządzenia i jego certyfikat klucza prywatnego. Jeśli tworzysz rejestrację indywidualną, certyfikat tożsamości urządzenia jest przekazywany do usługi DPS. Klucz prywatny jest przekazywany do środowiska uruchomieniowego IoT Edge.
  • Certyfikat pełnego łańcucha, który powinien mieć co najmniej tożsamość urządzenia i certyfikaty pośrednie w nim. Certyfikat pełnego łańcucha jest przekazywany do środowiska uruchomieniowego IoT Edge.
  • Certyfikat pośredniego lub głównego urzędu certyfikacji z łańcucha zaufania certyfikatów. Ten certyfikat jest przekazywany do usługi DPS, jeśli tworzysz rejestrację grupową.

Uwaga

Obecnie ograniczenie w programie libiothsm uniemożliwia korzystanie z certyfikatów, które wygasają 1 stycznia 2038 r. lub później.

Używanie certyfikatów testowych (opcjonalnie)

Jeśli nie masz urzędu certyfikacji dostępnego do tworzenia nowych certyfikatów tożsamości i chcesz wypróbować ten scenariusz, repozytorium Git usługi Azure IoT Edge zawiera skrypty, których można użyć do generowania certyfikatów testowych. Te certyfikaty są przeznaczone tylko do testowania programistycznego i nie mogą być używane w środowisku produkcyjnym.

Aby utworzyć certyfikaty testowe, wykonaj kroki opisane w temacie Tworzenie certyfikatów demonstracyjnych w celu przetestowania IoT Edge funkcji urządzenia. Wykonaj dwie wymagane sekcje, aby skonfigurować skrypty generowania certyfikatów i utworzyć certyfikat głównego urzędu certyfikacji. Następnie wykonaj kroki tworzenia certyfikatu tożsamości urządzenia. Po zakończeniu należy mieć następujący łańcuch certyfikatów i parę kluczy:

  • <WRKDIR>\certs\iot-edge-device-identity-<name>-full-chain.cert.pem
  • <WRKDIR>\private\iot-edge-device-identity-<name>.key.pem

Oba te certyfikaty są potrzebne na urządzeniu IoT Edge. Jeśli zamierzasz używać rejestracji indywidualnej w usłudze DPS, przekażesz plik .cert.pem. Jeśli zamierzasz używać rejestracji grupowej w usłudze DPS, do przekazania potrzebny jest również certyfikat pośredniego lub głównego urzędu certyfikacji w tym samym łańcuchu zaufania certyfikatów. Jeśli używasz certyfikatów demonstracyjnych, użyj certyfikatu <WRKDIR>\certs\azure-iot-test-only.root.ca.cert.pem do rejestracji grupowej.

Tworzenie rejestracji w usłudze DPS

Użyj wygenerowanych certyfikatów i kluczy, aby utworzyć rejestrację w usłudze DPS dla co najmniej jednego urządzenia IoT Edge.

Jeśli chcesz aprowizować pojedyncze urządzenie IoT Edge, utwórz rejestrację indywidualną. Jeśli potrzebujesz wielu aprowizowania urządzeń, wykonaj kroki tworzenia rejestracji grupy usługi DPS.

Podczas tworzenia rejestracji w usłudze DPS masz możliwość zadeklarowania stanu początkowej bliźniaczej reprezentacji urządzenia. W bliźniaczej reprezentacji urządzenia można ustawić tagi, aby grupować urządzenia według dowolnej metryki potrzebnej w rozwiązaniu, takiej jak region, środowisko, lokalizacja lub typ urządzenia. Te tagi służą do tworzenia wdrożeń automatycznych.

Aby uzyskać więcej informacji na temat rejestracji w usłudze device provisioning, zobacz Jak zarządzać rejestracjami urządzeń.

Tworzenie rejestracji indywidualnej usługi DPS

Rejestracje indywidualne przyjmują publiczną część certyfikatu tożsamości urządzenia i są zgodne z certyfikatem na urządzeniu.

Porada

Kroki opisane w tym artykule dotyczą Azure Portal, ale można również tworzyć rejestracje indywidualne przy użyciu interfejsu wiersza polecenia platformy Azure. Aby uzyskać więcej informacji, zobacz az iot dps enrollment ( Az iot dps enrollment). W ramach polecenia interfejsu wiersza polecenia użyj flagi z obsługą krawędzi, aby określić, że rejestracja dotyczy urządzenia IoT Edge.

  1. W Azure Portal przejdź do wystąpienia usługi IoT Hub device provisioning.

  2. W obszarze Ustawienia wybierz pozycję Zarządzaj rejestracjami.

  3. Wybierz pozycję Dodaj rejestrację indywidualną , a następnie wykonaj następujące kroki, aby skonfigurować rejestrację:

    • Mechanizm: wybierz pozycję X.509.

    • Plik pem lub cer certyfikatu podstawowego: przekaż plik publiczny z certyfikatu tożsamości urządzenia. Jeśli skrypty były używane do generowania certyfikatu testowego, wybierz następujący plik:

      <WRKDIR>\certs\iot-edge-device-identity-<name>.cert.pem

    • IoT Hub Identyfikator urządzenia: podaj identyfikator urządzenia, jeśli chcesz. Możesz użyć identyfikatorów urządzeń do kierowania poszczególnych urządzeń na potrzeby wdrożenia modułu. Jeśli nie podasz identyfikatora urządzenia, zostanie użyta nazwa pospolita (CN) w certyfikacie X.509.

    • IoT Edge urządzenie: wybierz pozycję True, aby zadeklarować, że rejestracja dotyczy urządzenia IoT Edge.

    • Wybierz centra IoT, do których można przypisać to urządzenie: wybierz połączone centrum IoT, z którym chcesz połączyć urządzenie. Możesz wybrać wiele centrów, a urządzenie zostanie przypisane do jednego z nich zgodnie z wybranymi zasadami alokacji.

    • Początkowy stan bliźniaczej reprezentacji urządzenia: dodaj wartość tagu do dodania do bliźniaczej reprezentacji urządzenia, jeśli chcesz. Tagów można używać do grup docelowych urządzeń na potrzeby automatycznego wdrażania. Przykład:

      {
          "tags": {
             "environment": "test"
          },
          "properties": {
             "desired": {}
          }
      }
      
  4. Wybierz pozycję Zapisz.

W obszarze Zarządzanie rejestracjami możesz wyświetlić identyfikator rejestracji dla właśnie utworzonej rejestracji. Zanotuj ją, ponieważ może być używana podczas aprowizacji urządzenia.

Teraz, gdy rejestracja istnieje dla tego urządzenia, środowisko uruchomieniowe IoT Edge może automatycznie aprowizować urządzenie podczas instalacji.

Instalowanie IoT Edge

Wdróż usługę Azure IoT Edge dla systemu Linux w systemie Windows na urządzeniu docelowym.

Zainstaluj IoT Edge dla systemu Linux w systemie Windows na urządzeniu docelowym.

Uwaga

W poniższym procesie programu PowerShell opisano sposób wdrażania IoT Edge dla systemu Linux w systemie Windows na urządzeniu lokalnym. Aby wdrożyć na zdalnym urządzeniu docelowym przy użyciu programu PowerShell, możesz użyć zdalnego programu PowerShell do nawiązania połączenia z urządzeniem zdalnym i zdalnie uruchomić te polecenia na tym urządzeniu.

  1. W sesji programu PowerShell z podwyższonym poziomem uprawnień uruchom każde z poniższych poleceń, aby pobrać IoT Edge dla systemu Linux w systemie Windows.

    $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
    $ProgressPreference = 'SilentlyContinue'
    Invoke-WebRequest "https://aka.ms/AzEflowMSI" -OutFile $msiPath
    
  2. Zainstaluj IoT Edge dla systemu Linux w systemie Windows na urządzeniu.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
    

    Niestandardowe IoT Edge dla systemu Linux w katalogach instalacji systemu Windows i VHDX można określić, dodając INSTALLDIR="<FULLY_QUALIFIED_PATH>" parametry i VHDXDIR="<FULLY_QUALIFIED_PATH>" do polecenia instalacji. Jeśli na przykład chcesz użyć folderu D:\EFLOW do instalacji i dysku D:\EFLOW-VHDX dla dysku VHDX , możesz użyć następującego polecenia cmdlet programu PowerShell.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
    
  3. Ustaw zasady wykonywania na urządzeniu docelowym na AllSigned wartość , jeśli nie jest jeszcze. Zapoznaj się z wymaganiami wstępnymi programu PowerShell dotyczącymi poleceń, aby sprawdzić bieżące zasady wykonywania i ustawić zasady wykonywania na AllSigned.

  4. Utwórz IoT Edge dla systemu Linux we wdrożeniu systemu Windows. Wdrożenie tworzy maszynę wirtualną z systemem Linux i instaluje środowisko uruchomieniowe IoT Edge.

    Deploy-Eflow
    

    Porada

    Domyślnie Deploy-Eflow polecenie tworzy maszynę wirtualną z systemem Linux z 1 GB pamięci RAM, 1 rdzeniem procesorów wirtualnych i 16 GB miejsca na dysku. Jednak zasoby wymagane przez maszynę wirtualną są bardzo zależne od wdrożonych obciążeń. Jeśli maszyna wirtualna nie ma wystarczającej ilości pamięci do obsługi obciążeń, uruchomienie nie powiedzie się.

    Dostępne zasoby maszyny wirtualnej można dostosować przy użyciu Deploy-Eflow opcjonalnych parametrów polecenia.

    Na przykład poniższe polecenie tworzy maszynę wirtualną z 4 rdzeniami procesorów wirtualnych, 4 GB pamięci RAM (reprezentowanych w MB) i 20 GB miejsca na dysku:

    Deploy-Eflow -cpuCount 4 -memoryInMB 4096 -vmDiskSize 20
    

    Aby uzyskać informacje o wszystkich dostępnych opcjonalnych parametrach, zobacz Funkcje programu PowerShell dla IoT Edge dla systemu Linux w systemie Windows.

    Ostrzeżenie

    Domyślnie maszyna wirtualna EFLOW Linux nie ma konfiguracji DNS. Wdrożenia korzystające z protokołu DHCP spróbują uzyskać konfigurację DNS propagowaną przez serwer DHCP. Sprawdź konfigurację DNS, aby zapewnić łączność z Internetem. Aby uzyskać więcej informacji, zobacz AzEFLOW-DNS.

    Procesor GPU można przypisać do wdrożenia, aby włączyć moduły z przyspieszonym procesorem GPU systemu Linux. Aby uzyskać dostęp do tych funkcji, należy zainstalować wymagania wstępne opisane w temacie Przyspieszanie procesora GPU dla usługi Azure IoT Edge dla systemu Linux w systemie Windows.

    Aby użyć przekazywania procesora GPU, dodaj parametry gpuName, gpuPassthroughType i gpuCount do polecenia Deploy-Eflow . Aby uzyskać informacje o wszystkich dostępnych opcjonalnych parametrach, zobacz Funkcje programu PowerShell dla IoT Edge dla systemu Linux w systemie Windows.

    Ostrzeżenie

    Włączenie przekazywania urządzeń sprzętowych może zwiększyć ryzyko bezpieczeństwa. Firma Microsoft zaleca sterownik ograniczania ryzyka urządzenia od dostawcy procesora GPU, jeśli ma to zastosowanie. Aby uzyskać więcej informacji, zobacz Wdrażanie urządzeń graficznych przy użyciu dyskretnego przypisania urządzenia.

  5. Wprowadź wartość "Y", aby zaakceptować postanowienia licencyjne.

  6. Wprowadź wartość "O" lub "R", aby przełączać opcjonalne dane diagnostyczne w zależności od preferencji.

  7. Po zakończeniu wdrażania okno programu PowerShell zgłasza pomyślne wdrożenie.

    Pomyślne wdrożenie powiedzie

    Po pomyślnym wdrożeniu możesz przystąpić do aprowizowania urządzenia.

Aprowizuj urządzenie przy użyciu tożsamości chmury

Po zainstalowaniu środowiska uruchomieniowego na urządzeniu skonfiguruj urządzenie przy użyciu informacji używanych do nawiązania połączenia z usługą aprowizacji urządzeń i IoT Hub.

Przygotuj następujące informacje:

  • Wartość Zakres identyfikatora usługi DPS. Tę wartość można pobrać ze strony przeglądu wystąpienia usługi DPS w Azure Portal.
  • Plik łańcucha certyfikatów tożsamości urządzenia na urządzeniu.
  • Plik klucza tożsamości urządzenia na urządzeniu.

Aby aprowizować urządzenie IoT Edge, możesz użyć programu PowerShell lub Windows Admin Center.

W programie PowerShell uruchom następujące polecenie z wartościami zastępczymi zaktualizowanymi własnymi wartościami:

Provision-EflowVm -provisioningType DpsX509 -scopeId PASTE_YOUR_ID_SCOPE_HERE -registrationId PASTE_YOUR_REGISTRATION_ID_HERE -identityCertPath PASTE_ABSOLUTE_PATH_TO_IDENTITY_CERTIFICATE_HERE -identityPrivKeyPath PASTE_ABSOLUTE_PATH_TO_IDENTITY_PRIVATE_KEY_HERE

Weryfikowanie pomyślnej instalacji

Sprawdź, czy IoT Edge dla systemu Linux w systemie Windows została pomyślnie zainstalowana i skonfigurowana na urządzeniu IoT Edge.

Możesz sprawdzić, czy użyto rejestracji indywidualnej utworzonej w usłudze aprowizacji urządzeń. Przejdź do wystąpienia usługi aprowizacji urządzeń w Azure Portal. Otwórz szczegóły rejestracji dla utworzonej rejestracji indywidualnej. Zwróć uwagę, że stan rejestracji jest przypisany , a identyfikator urządzenia jest wyświetlany na liście.

  1. Zaloguj się do IoT Edge dla systemu Linux na maszynie wirtualnej z systemem Windows przy użyciu następującego polecenia w sesji programu PowerShell:

    Connect-EflowVm
    

    Uwaga

    Jedynym kontem dozwolonym przez protokół SSH na maszynie wirtualnej jest użytkownik, który go utworzył.

  2. Po zalogowaniu można sprawdzić listę uruchomionych modułów IoT Edge przy użyciu następującego polecenia systemu Linux:

    sudo iotedge list
    
  3. Jeśli musisz rozwiązać problemy z usługą IoT Edge, użyj następujących poleceń systemu Linux.

    1. Jeśli potrzebujesz rozwiązać problem z usługą, pobierz jej dzienniki.

      sudo journalctl -u iotedge
      
    2. Użyj narzędzia, check aby zweryfikować stan konfiguracji i połączenia urządzenia.

      sudo iotedge check
      

    Uwaga

    Na nowo zainicjowanym urządzeniu może zostać wyświetlony błąd związany z usługą IoT Edge Hub:

    × gotowości produkcyjnej: katalog magazynu usługi Edge Hub jest utrwalany w systemie plików hosta — błąd

    Nie można sprawdzić bieżącego stanu kontenera edgeHub

    Ten błąd jest oczekiwany na nowo zainicjowanym urządzeniu, ponieważ moduł IoT Edge Hub nie jest uruchomiony. Aby rozwiązać ten problem, w IoT Hub ustaw moduły dla urządzenia i utwórz wdrożenie. Tworzenie wdrożenia dla urządzenia uruchamia moduły na urządzeniu, w tym moduł IoT Edge Hub.

Podczas tworzenia nowego urządzenia IoT Edge zostanie wyświetlony kod 417 -- The device's deployment configuration is not set stanu w Azure Portal. Ten stan jest normalny i oznacza, że urządzenie jest gotowe do otrzymania wdrożenia modułu.

Odinstalowywanie IoT Edge dla systemu Linux w systemie Windows

Jeśli chcesz usunąć usługę Azure IoT Edge dla systemu Linux w systemie Windows z urządzenia, użyj następujących poleceń.

  1. Otwórz ustawienia w systemie Windows
  2. Wybierz pozycję Dodaj lub usuń programy
  3. Wybieranie aplikacji LTS platformy Azure IoT Edge
  4. Wybierz pozycję Odinstaluj

Następne kroki

Proces rejestracji usługi aprowizacji urządzeń umożliwia ustawienie identyfikatora urządzenia i tagów bliźniaczej reprezentacji urządzenia w tym samym czasie, co aprowizowanie nowego urządzenia. Możesz użyć tych wartości do określania docelowych poszczególnych urządzeń lub grup urządzeń przy użyciu automatycznego zarządzania urządzeniami. Dowiedz się, jak wdrażać i monitorować moduły IoT Edge na dużą skalę przy użyciu Azure Portal lub interfejsu wiersza polecenia platformy Azure.

Możesz również wykonać następujące czynności: