Tworzenie i aprowizowanie usługi IoT Edge dla systemu Linux na urządzeniu z systemem Windows na dużą skalę przy użyciu modułu TPM

Dotyczy:Znacznik wyboru usługi IoT Edge 1.4 IoT Edge 1.4

Ważne

Obsługiwane są wersje usługi IoT Edge 1.5 LTS i IoT Edge 1.4. Usługa IoT Edge 1.4 LTS kończy się 12 listopada 2024 r. Jeśli korzystasz z wcześniejszej wersji, zobacz aktualizację Azure IoT Edge.

Ten artykuł zawiera instrukcje dotyczące automatycznego aprowizowania usługi Azure IoT Edge dla systemu Linux na urządzeniu z systemem Windows przy użyciu modułu TPM (Trusted Platform Module). Urządzenia usługi Azure IoT Edge można aprowizować automatycznie za pomocą usługi aprowizacji urządzeń usługi Azure IoT Hub. Jeśli nie znasz procesu automatycznego aprowizowania, przed kontynuowaniem zapoznaj się z omówieniem aprowizacji.

W tym artykule opisano dwie metodologie. Wybierz swoją preferencję na podstawie architektury rozwiązania:

  • Automatyczne aprowizowanie systemu Linux na urządzeniu z systemem Windows przy użyciu fizycznego sprzętu TPM.
  • Automatyczne aprowizowanie systemu Linux na urządzeniu z systemem Windows przy użyciu symulowanego modułu TPM. Zalecamy tę metodologię tylko jako scenariusz testowania. Symulowany moduł TPM nie oferuje tych samych zabezpieczeń co fizyczny moduł TPM.

Zadania są następujące:

  • Zainstaluj usługę IoT Edge dla systemu Linux w systemie Windows.
  • Pobierz informacje o module TPM z urządzenia.
  • Utwórz rejestrację indywidualną dla urządzenia.
  • Aprowizuj urządzenie przy użyciu informacji o module TPM.

Wymagania wstępne

Zasoby w chmurze

  • Aktywne centrum IoT
  • Wystąpienie usługi aprowizacji urządzeń usługi IoT Hub na platformie Azure połączone z centrum IoT Hub
    • Jeśli nie masz wystąpienia usługi device provisioning, możesz postępować zgodnie z instrukcjami w przewodniku Szybki start Tworzenie nowej usługi aprowizacji urządzeń w usłudze IoT Hub i Łączenie centrum IoT i usługi aprowizacji urządzeń w usłudze IoT Hub.
    • Po uruchomieniu usługi aprowizacji urządzeń skopiuj wartość pola Zakres identyfikatora ze strony przeglądu. Ta wartość jest używana podczas konfigurowania środowiska uruchomieniowego usługi IoT Edge.

Wymagania dotyczące urządzenia

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

  • Wymagania systemowe

    • Windows 101/11 (Pro, Enterprise, IoT Enterprise)
    • Windows Server 20191/2022
      1 Windows 10 i Windows Server 2019 minimalna kompilacja 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óry może być używany do instalacji systemu EFLOW. W razie potrzeby możesz utworzyć własny niestandardowy przełącznik wirtualny.

Napiwek

Jeśli chcesz użyć modułów z przyspieszonym procesorem GPU systemu Linux w usłudze Azure IoT Edge dla systemu Linux we wdrożeniu systemu Windows, należy rozważyć kilka opcji konfiguracji.

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 zdecydujesz się na przyspieszenie procesora GPU podczas instalacji, konieczne będzie ponowne uruchomienie procesu instalacji.

Narzędzia deweloperskie

Przygotuj 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ń przy użyciu 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 programie Windows PowerShell, zobacz dokumentację funkcji programu PowerShell.

Uwaga

Moduł TPM 2.0 jest wymagany w przypadku korzystania z zaświadczania modułu TPM z usługą aprowizacji urządzeń.

W przypadku korzystania z modułu TPM można tworzyć tylko rejestracje indywidualne, a nie grupowe, a nie rejestracje usługi aprowizacji urządzeń.

Instalowanie usługi IoT Edge

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

Uwaga

W poniższym procesie programu PowerShell opisano sposób wdrażania usługi IoT Edge dla systemu Linux 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 jedną z następujących poleceń w zależności od architektury urządzenia docelowego, aby pobrać usługę IoT Edge dla systemu Linux w systemie Windows.

    • X64/AMD64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_X64" -OutFile $msiPath
      
    • ARM64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_ARM64" -OutFile $msiPath
      
  2. Zainstaluj usługę 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"
    

    Niestandardową usługę IoT Edge dla systemu Linux można określić w katalogach instalacji systemu Windows i VHDX, 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 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 jeszcze nie jest. Zobacz wymagania wstępne programu PowerShell dla poleceń, aby sprawdzić bieżące zasady wykonywania i ustawić zasady wykonywania na AllSigned.

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

    Deploy-Eflow
    

    Napiwek

    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. Jest to wymagane do wdrożenia rozwiązania EFLOW na urządzeniu z minimalnymi wymaganiami sprzętowymi.

    Na przykład poniższe polecenie tworzy maszynę wirtualną z 1 rdzeniem procesorów wirtualnych, 1 GB pamięci RAM (reprezentowanym w MB) i 2 GB miejsca na dysku:

    Deploy-Eflow -cpuCount 1 -memoryInMB 1024 -vmDataSize 2
    

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

    Ostrzeżenie

    Domyślnie maszyna wirtualna EFLOW z systemem 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 upewnić się, że łączność z Internetem. Aby uzyskać więcej informacji, zobacz AzEFLOW-DNS.

    Procesor GPU można przypisać do wdrożenia, aby umożliwić moduły z przyspieszonym procesorem GPU dla systemu Linux. Aby uzyskać dostęp do tych funkcji, należy zainstalować wymagania wstępne opisane w artykule 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 parametrach opcjonalnych, zobacz Funkcje programu PowerShell dla usługi 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. W zależności od preferencji wprowadź wartość "O" lub "R", aby włączyć lub wyłączyć opcjonalne dane diagnostyczne.

  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.

Aby przygotować urządzenie do aprowizacji przy użyciu modułu TPM, należy wykonać kilka kroków. Pozostaw wdrożenie otwarte podczas przygotowywania urządzenia. Wrócisz do wdrożenia w dalszej części artykułu.

Włączanie przekazywania modułu TPM

Usługa IoT Edge dla systemu Linux na maszynie wirtualnej z systemem Windows ma funkcję TPM, którą można włączyć lub wyłączyć. Domyślnie jest ona wyłączona. Po włączeniu tej funkcji maszyna wirtualna może uzyskać dostęp do modułu TPM maszyny hosta.

  1. Otwórz program PowerShell w sesji z podwyższonym poziomem uprawnień.

  2. Jeśli jeszcze tego nie zrobiono, ustaw zasady wykonywania na urządzeniu AllSigned tak, aby można było uruchomić usługę IoT Edge dla systemu Linux w funkcjach programu Windows PowerShell.

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    
  3. Włącz funkcję modułu TPM.

    Set-EflowVmFeature -feature 'DpsTpm' -enable
    

Pobieranie informacji o module TPM z urządzenia

Aby aprowizować urządzenie, potrzebujesz klucza poręczenia dla mikroukładu modułu TPM i identyfikatora rejestracji dla urządzenia. Te informacje są podane w wystąpieniu usługi aprowizacji urządzeń, aby usługa mogła rozpoznać urządzenie podczas próby nawiązania połączenia.

Klucz poręczenia jest unikatowy dla każdego mikroukładu modułu TPM. Jest on uzyskiwany od producenta mikroukładu TPM skojarzonego z nim. Możesz uzyskać unikatowy identyfikator rejestracji dla urządzenia TPM, na przykład tworząc skrót SHA-256 klucza poręczenia.

Usługa IoT Edge dla systemu Linux w systemie Windows udostępnia skrypt programu PowerShell, który ułatwia pobieranie tych informacji z modułu TPM. Aby użyć skryptu, wykonaj następujące kroki na urządzeniu:

  1. Otwórz program PowerShell w sesji z podwyższonym poziomem uprawnień.

  2. Uruchom polecenie .

    Get-EflowVmTpmProvisioningInfo | Format-List
    

Tworzenie rejestracji usługi aprowizacji urządzeń

Użyj informacji o aprowizacji modułu TPM, aby utworzyć rejestrację indywidualną w usłudze aprowizacji urządzeń.

Podczas tworzenia rejestracji w usłudze aprowizacji urządzeń możesz zadeklarować stan bliźniaczej reprezentacji urządzenia początkowego. W bliźniaczej reprezentacji urządzenia można ustawić tagi na grupowanie urządzeń według dowolnej metryki używanej w rozwiązaniu, takiej jak region, środowisko, lokalizacja lub typ urządzenia. Te tagi służą do tworzenia wdrożeń automatycznych.

Napiwek

Kroki opisane w tym artykule dotyczą witryny Azure Portal, ale można również utworzyć 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 usługi IoT Edge.

  1. W witrynie 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ę:

    1. W obszarze Mechanizm wybierz pozycję TPM.

    2. Podaj klucz poręczenia i identyfikator rejestracji skopiowany z maszyny wirtualnej lub urządzenia fizycznego.

    3. Podaj identyfikator urządzenia, jeśli chcesz. Jeśli nie podasz identyfikatora urządzenia, zostanie użyty identyfikator rejestracji.

    4. Wybierz pozycję True , aby zadeklarować, że maszyna wirtualna lub urządzenie fizyczne jest urządzeniem usługi IoT Edge.

    5. Wybierz połączone centrum IoT Hub, z którym chcesz połączyć urządzenie, lub wybierz pozycję Połącz z nową usługą IoT Hub. Można wybrać wiele centrów, a urządzenie zostanie przypisane do jednego z nich zgodnie z wybranymi zasadami przypisania.

    6. Jeśli chcesz, dodaj wartość tagu do stanu początkowej bliźniaczej reprezentacji urządzenia. Tagów można używać do grup docelowych urządzeń na potrzeby wdrażania modułu. Aby uzyskać więcej informacji, zobacz Wdrażanie modułów usługi IoT Edge na dużą skalę.

    7. Wybierz pozycję Zapisz.

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

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

  1. Otwórz sesję programu PowerShell z podwyższonym poziomem uprawnień na urządzeniu z systemem Windows.

  2. Aprowizuj urządzenie przy użyciu identyfikatora zakresu zebranego z wystąpienia usługi aprowizacji urządzeń.

    Provision-EflowVM -provisioningType "DpsTpm" -scopeId "SCOPE_ID_HERE"
    

    Jeśli urządzenie zostało zarejestrowane przy użyciu niestandardowego identyfikatora rejestracji, należy określić ten identyfikator rejestracji, a także podczas aprowizacji:

    Provision-EflowVM -provisioningType "DpsTpm" -scopeId "SCOPE_ID_HERE" -registrationId "REGISTRATION_ID_HERE"
    

Weryfikowanie pomyślnej instalacji

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

Jeśli środowisko uruchomieniowe zostało uruchomione pomyślnie, możesz przejść do centrum IoT i rozpocząć wdrażanie modułów usługi IoT Edge na urządzeniu.

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

Użyj następujących poleceń na urządzeniu, aby sprawdzić, czy usługa IoT Edge została zainstalowana i uruchomiona pomyślnie.

  1. Połączenie do usługi 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 do SSH na maszynie wirtualnej jest użytkownik, który go utworzył.

  2. Po zalogowaniu możesz sprawdzić listę uruchomionych modułów usługi 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 iotedge system logs
      
    2. check Użyj narzędzia , aby zweryfikować konfigurację i stan połączenia urządzenia.

      sudo iotedge check
      

    Uwaga

    Na nowo aprowizowanych urządzeniach 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 zaaprowizowanych urządzeniach, ponieważ moduł usługi IoT Edge Hub nie jest uruchomiony. Aby rozwiązać ten problem, w usłudze IoT Hub ustaw moduły dla urządzenia i utwórz wdrożenie. Utworzenie wdrożenia urządzenia powoduje uruchomienie modułów na urządzeniu, w tym modułu usługi IoT Edge Hub.

Odinstalowywanie usługi IoT Edge dla systemu Linux w systemie Windows

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

  1. Otwieranie Ustawienia w systemie Windows
  2. Wybierz pozycję Dodaj lub usuń programy
  3. Wybieranie aplikacji usługi 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źniaczych reprezentacji urządzenia w tym samym czasie co aprowizowanie nowego urządzenia. Tych wartości można użyć do określania wartości docelowych dla 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 usługi IoT Edge na dużą skalę przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.