Udostępnij przez


Wdrażanie usługi IoT Edge na maszynie wirtualnej z systemem Ubuntu w usłudze Azure Stack Edge

DOTYCZY:Tak dla SKU Pro GPUAzure Stack Edge Pro — GPUTak dla SKU Pro 2Azure Stack Edge Pro 2Tak dla SKU Pro RAzure Stack Edge Pro RTak dla SKU Mini RAzure Stack Edge Mini R

W tym artykule opisano sposób wdrażania środowiska uruchomieniowego usługi IoT Edge na maszynie wirtualnej z systemem Ubuntu uruchomionej na urządzeniu Azure Stack Edge. W przypadku nowych prac programistycznych użyj metody wdrażania samoobsługowego opisanej w tym artykule, ponieważ używa najnowszej wersji oprogramowania.

Przepływ na wysokim poziomie

Przepływ wysokiego poziomu wygląda następująco:

  1. Utwórz lub zidentyfikuj wystąpienie usługi IoT Hub lub Azure IoT Hub Device Provisioning Service (DPS).
  2. Użyj interfejsu wiersza polecenia platformy Azure, aby uzyskać obraz maszyny wirtualnej z systemem Ubuntu 20.04 LTS.
  3. Załaduj obraz Ubuntu do biblioteki obrazów maszyny wirtualnej Azure Stack Edge.
  4. Rozmieść obraz Ubuntu jako VM, wykonując następujące kroki:
    1. Podaj nazwę maszyny wirtualnej, nazwę użytkownika i hasło. Tworzenie innego dysku jest opcjonalne.
    2. Skonfiguruj konfigurację sieci.
    3. Udostępnij przygotowany skrypt cloud-init na karcie Zaawansowane .

Wymagania wstępne

Zanim się zacznie, upewnij się, że masz:

  • Urządzenie Azure Stack Edge, które aktywowałeś. Aby uzyskać szczegółowe instrukcje, zobacz Aktywacja Azure Stack Edge Pro GPU.

  • Dostęp do najnowszego obrazu maszyny wirtualnej Ubuntu 20.04 z Marketplace Azure lub obrazu niestandardowego, który przynosisz ze sobą:

    $urn = Canonical:0001-com-ubuntu-server-focal:20_04-lts:20.04.202007160

    Aby uzyskać obraz maszyny wirtualnej, użyj kroków opisanych w artykule Wyszukiwanie obrazów w Azure Marketplace.

Przygotowywanie skryptu cloud-init

Aby wdrożyć środowisko uruchomieniowe usługi IoT Edge na maszynie wirtualnej z systemem Ubuntu, użyj skryptu cloud-init podczas wdrażania maszyny wirtualnej.

Wykonaj kroki opisane w jednej z następujących sekcji:

Używanie aprowizacji klucza symetrycznego

Aby połączyć urządzenie z usługą IoT Hub bez usługi DPS, wykonaj kroki opisane w tej sekcji, aby przygotować skrypt cloud-init na stronie Zaawansowane tworzenie maszyny wirtualnej w celu wdrożenia środowiska uruchomieniowego IoT Edge i środowiska uruchomieniowego kontenera NVIDIA.

  1. Użyj istniejącego centrum IoT Lub utwórz nowe centrum. Wykonaj następujące kroki, aby utworzyć centrum IoT Hub.

  2. Wykonaj następujące kroki, aby zarejestrować urządzenie Azure Stack Edge w usłudze IoT Hub.

  3. Pobierz podstawowe parametry połączenia z usługi IoT Hub dla urządzenia, a następnie wklej je w poniższej lokalizacji dla parametru DeviceConnectionString.

Skrypt cloud-init do dostarczania klucza symetrycznego


#cloud-config

runcmd:
  - dcs="<DeviceConnectionString>"
  - |
      set -x
      (

        # Wait for docker daemon to start

        while [ $(ps -ef | grep -v grep | grep docker | wc -l) -le 0 ]; do 
          sleep 3
        done
        
        if [ $(lspci | grep NVIDIA | wc -l) -gt 0 ]; then

          #install NVIDIA drivers

          apt install -y ubuntu-drivers-common
         ubuntu-drivers devices
          ubuntu-drivers autoinstall

          # Install NVIDIA Container Runtime

          curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | apt-key add -
          distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
          curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | tee /etc/apt/sources.list.d/nvidia-container-runtime.list
          apt update
          apt install -y nvidia-container-runtime
        fi
        
        # Restart Docker

        systemctl daemon-reload
        systemctl restart docker

        # Install IoT Edge

        apt install -y aziot-edge

        if [ ! -z $dcs ]; then
          iotedge config mp --connection-string $dcs
          iotedge config apply
        fi
      if [ $(lspci | grep NVIDIA | wc -l) -gt 0 ]; then      
         reboot
      fi       ) &

apt:
  preserve_sources_list: true
  sources:
    msft.list:
      source: "deb https://packages.microsoft.com/ubuntu/20.04/prod focal main"
      key: |
        -----BEGIN PGP PUBLIC KEY BLOCK-----
        Version: GnuPG v1.4.7 (GNU/Linux)

        mQENBFYxWIwBCADAKoZhZlJxGNGWzqV+1OG1xiQeoowKhssGAKvd+buXCGISZJwT
        LXZqIcIiLP7pqdcZWtE9bSc7yBY2MalDp9Liu0KekywQ6VVX1T72NPf5Ev6x6DLV
        7aVWsCzUAF+eb7DC9fPuFLEdxmOEYoPjzrQ7cCnSV4JQxAqhU4T6OjbvRazGl3ag
        OeizPXmRljMtUUttHQZnRhtlzkmwIrUivbfFPD+fEoHJ1+uIdfOzZX8/oKHKLe2j
        H632kvsNzJFlROVvGLYAk2WRcLu+RjjggixhwiB+Mu/A8Tf4V6b+YppS44q8EvVr
        M+QvY7LNSOffSO6Slsy9oisGTdfE39nC7pVRABEBAAG0N01pY3Jvc29mdCAoUmVs
        ZWFzZSBzaWduaW5nKSA8Z3Bnc2VjdXJpdHlAbWljcm9zb2Z0LmNvbT6JATUEEwEC
        AB8FAlYxWIwCGwMGCwkIBwMCBBUCCAMDFgIBAh4BAheAAAoJEOs+lK2+EinPGpsH
        /32vKy29Hg51H9dfFJMx0/a/F+5vKeCeVqimvyTM04C+XENNuSbYZ3eRPHGHFLqe
        MNGxsfb7C7ZxEeW7J/vSzRgHxm7ZvESisUYRFq2sgkJ+HFERNrqfci45bdhmrUsy
        7SWw9ybxdFOkuQoyKD3tBmiGfONQMlBaOMWdAsic965rvJsd5zYaZZFI1UwTkFXV
        KJt3bp3Ngn1vEYXwijGTa+FXz6GLHueJwF0I7ug34DgUkAFvAs8Hacr2DRYxL5RJ
        XdNgj4Jd2/g6T9InmWT0hASljur+dJnzNiNCkbn9KbX7J/qK1IbR8y560yRmFsU+
        NdCFTW7wY0Fb1fWJ+/KTsC4=
        =J6gs
        -----END PGP PUBLIC KEY BLOCK----- 
packages:
  - moby-cli
  - moby-engine
write_files:
  - path: /etc/systemd/system/docker.service.d/override.conf
    permissions: "0644"
    content: |
      [Service]
      ExecStart=
      ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime --log-driver local

Korzystanie z usługi DPS

Wykonaj kroki opisane w tej sekcji, aby połączyć urządzenie z usługami DPS i IoT Central. Przygotujesz plik script.sh do wdrożenia środowiska uruchomieniowego usługi IoT Edge podczas tworzenia maszyny wirtualnej.

  1. Użyj istniejącego IoT Hub i usługi DPS lub utwórz nowy IoT Hub.

  2. Przejdź do zasobu usługi DPS i utwórz rejestrację indywidualną. 

    1. Przejdź do usługi Device Provisioning>Zarządzaj rejestracjami>Dodaj rejestrację indywidualną.
    2. Upewnij się, że wybór Klucza symetrycznego dla typu zaświadczania i urządzenia IoT Edge jest ustawiony na Prawda. Domyślnym wyborem jest fałsz.
    3. Pobierz następujące informacje ze strony zasobów DPS:
      • Identyfikator rejestracji. Zalecamy użycie tego samego identyfikatora co identyfikator urządzenia dla usługi IoT Hub.
      • Zakres identyfikatora, który jest dostępny w menu Przegląd.
      • Podstawowy klucz SAS z menu Rejestracja indywidualna.
  3. Skopiuj i wklej wartości z usługi IoT Hub (IDScope) i DPS (RegistrationID, Symmetric Key) do argumentów skryptu.

Skrypt cloud-init dla usługi IoT Hub DPS


#cloud-config

runcmd:
    - dps_idscope="<DPS IDScope>"
    - registration_device_id="<RegistrationID>"
    - key="<Symmetric Key>"
    - |
      set -x
      (
      
      wget https://github.com/Azure/iot-edge-config/releases/latest/download/azure-iot-edge-installer.sh -O azure-iot-edge-installer.sh \
      && chmod +x azure-iot-edge-installer.sh \
      && sudo -H ./azure-iot-edge-installer.sh -s $dps_idscope -r $registration_device_id -k $key \
      && rm -rf azure-iot-edge-installer.sh
      
      # Wait for docker daemon to start

      while [ $(ps -ef | grep -v grep | grep docker | wc -l) -le 0 ]; do 
        sleep 3
      done

      systemctl stop aziot-edge

      if [ $(lspci | grep NVIDIA | wc -l) -gt 0 ]; then

        #install NVIDIA drivers

        apt install -y ubuntu-drivers-common
        ubuntu-drivers devices
        ubuntu-drivers autoinstall

        # Install NVIDIA Container Runtime

        curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | apt-key add -
        distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
        curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | tee /etc/apt/sources.list.d/nvidia-container-runtime.list
        apt update
        apt install -y nvidia-container-runtime
      fi

      # Restart Docker

      systemctl daemon-reload
      systemctl restart docker

      systemctl start aziot-edge    
      if [ $(lspci | grep NVIDIA | wc -l) -gt 0 ]; then      
         reboot
      fi
      ) &
write_files:
  - path: /etc/systemd/system/docker.service.d/override.conf
    permissions: "0644"
    content: |
      [Service]
      ExecStart=
      ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime --log-driver local

Wdrażanie środowiska uruchomieniowego usługi IoT Edge

Wdrażanie środowiska uruchomieniowego usługi IoT Edge jest częścią tworzenia maszyny wirtualnej przy użyciu skryptu cloud-init wymienionego powyżej.

Poniżej przedstawiono ogólne kroki wdrażania maszyny wirtualnej i środowiska uruchomieniowego usługi IoT Edge:

  1. Uzyskaj obraz maszyny wirtualnej z systemem Ubuntu z witryny Azure Marketplace. Aby uzyskać szczegółowe instrukcje, postępuj zgodnie z instrukcjami w artykule Używanie obrazu witryny Azure Marketplace do tworzenia obrazu maszyny wirtualnej dla usługi Azure Stack Edge.

    1. W witrynie Azure Portal przejdź do witryny Azure Marketplace.
    2. Połącz się z usługą Azure Cloud Shell lub klientem z zainstalowanym interfejsem wiersza polecenia platformy Azure. Aby uzyskać szczegółowe instrukcje, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.

    Uwaga

    Zamknięcie sesji powłoki spowoduje usunięcie wszystkich zmiennych utworzonych podczas sesji powłoki. Ponowne otwarcie sesji będzie wymagać ponownego utworzenia zmiennych.

    c. Uruchom następujące polecenie, aby ustawić subskrypcję.

    az account set –subscription <subscription id>
    
  2. Wykonaj kroki opisane w Wyszukiwanie obrazów w Azure Marketplace, aby wyszukać obraz z systemem Ubuntu 20.04 LTS.

    Przykład obrazu systemu Ubuntu 20.04 LTS:

    $urn = Canonical:0001-com-ubuntu-server-focal:20_04-lts:20.04.202007160
    
  3. Utwórz nowy dysk zarządzany na podstawie obrazu witryny Marketplace. Aby uzyskać szczegółowe instrukcje, zobacz Użycie obrazu Azure Marketplace do utworzenia obrazu maszyny wirtualnej dla Azure Stack Edge.

  4. Wyeksportuj dysk VHD z dysku zarządzanego do konta usługi Azure Storage. Aby uzyskać szczegółowe instrukcje, zobacz Eksportowanie dysku VHD z dysku zarządzanego do usługi Azure Storage.

  5. Wykonaj następujące kroki, aby utworzyć maszynę wirtualną z systemem Ubuntu przy użyciu obrazu maszyny wirtualnej.

    1. Określ skrypt cloud-init na karcie Zaawansowane. Aby utworzyć maszynę wirtualną, zobacz Wdrażanie maszyny wirtualnej z procesorem GPU za pośrednictwem witryny Azure Portal lub Wdrażanie maszyny wirtualnej za pośrednictwem witryny Azure Portal.

      Zrzut ekranu przedstawiający kartę Zaawansowane konfiguracji maszyny wirtualnej w witrynie Azure Portal.

    2. Określ odpowiednie ciągi połączeń urządzenia w cloud-init, aby połączyć się z urządzeniem IoT Hub lub DPS. Aby uzyskać szczegółowe instrukcje, zobacz Konfiguruj przy użyciu kluczy symetrycznych lub Konfiguruj przy użyciu platformy usługi IoT Hub DPS.

      Zrzut ekranu przedstawiający pole Niestandardowe dane konfiguracji maszyny wirtualnej w witrynie Azure Portal.

Jeśli podczas tworzenia maszyny wirtualnej nie określono pakietu cloud-init , musisz ręcznie wdrożyć środowisko uruchomieniowe usługi IoT Edge po utworzeniu maszyny wirtualnej:

  1. Nawiąż połączenie z maszyną wirtualną za pośrednictwem protokołu SSH.
  2. Zainstaluj silnik kontenerów na maszynie wirtualnej. Aby uzyskać szczegółowe instrukcje, zobacz Tworzenie i aprowizowanie urządzenia usługi IoT Edge w systemie Linux przy użyciu kluczy symetrycznych lub Przewodnik Szybki start — konfigurowanie usługi IoT Hub DPS w witrynie Azure Portal.

Weryfikowanie środowiska uruchomieniowego usługi IoT Edge

Wykonaj następujące kroki, aby sprawdzić, czy środowisko uruchomieniowe usługi IoT Edge jest uruchomione.

  1. Przejdź do zasobu usługi IoT Hub w witrynie Azure Portal.

  2. Wybierz urządzenie usługi IoT Edge.

  3. Sprawdź, czy środowisko uruchomieniowe usługi IoT Edge jest uruchomione.

    Zrzut ekranu przedstawiający stan środowiska uruchomieniowego usługi IoT Edge w witrynie Azure Portal.

    Aby rozwiązać problemy z konfiguracją urządzenia usługi IoT Edge, zobacz Rozwiązywanie problemów z urządzeniem usługi IoT Edge.

Aktualizowanie środowiska uruchomieniowego usługi IoT Edge

Aby zaktualizować maszynę wirtualną, postępuj zgodnie z instrukcjami w temacie Aktualizowanie usługi IoT Edge. Aby znaleźć najnowszą wersję Azure IoT Edge, zobacz Wydania Azure IoT Edge.

Następne kroki

Aby wdrożyć i uruchomić moduł usługi IoT Edge na maszynie wirtualnej z systemem Ubuntu, zobacz kroki opisane w artykule Wdrażanie modułów usługi IoT Edge.

Aby wdrożyć moduł DeepStream firmy NVIDIA, zobacz Deploy the NVIDIA DeepStream module on Ubuntu VM on Azure Stack Edge Pro with GPU (Wdrażanie modułu NVIDIA DeepStream na maszynie wirtualnej z systemem Ubuntu w usłudze Azure Stack Edge Pro przy użyciu procesora GPU).

Aby wdrożyć procesor NVIDIA DIGITS, zobacz Włączanie procesora GPU w wstępnie utworzonym module NVIDIA.