Sdílet prostřednictvím


Nasazení IoT Edge na virtuálním počítači s Ubuntu ve službě Azure Stack Edge

PLATÍ PRO:Ano pro skladovou položku Pro GPU Azure Stack Edge Pro – GPUAno pro skladovou položku Pro 2Azure Stack Edge Pro 2Ano pro skladovou položku Pro RAzure Stack Edge Pro RAno pro SKU Mini RAzure Stack Edge Mini R

Tento článek popisuje, jak nasadit modul runtime IoT Edge na virtuálním počítači s Ubuntu spuštěným na zařízení Azure Stack Edge. Pro novou vývojovou práci použijte samoobslužnou metodu nasazení popsanou v tomto článku, protože používá nejnovější verzi softwaru.

Vysokoúrovňový průtok

Tok vysoké úrovně je následující:

  1. Vytvořte nebo identifikujte instanci služby IoT Hub nebo Azure IoT Hub Device Provisioning Service (DPS).
  2. Pomocí Azure CLI získejte image virtuálního počítače s Ubuntu 20.04 LTS.
  3. Nahrajte image Ubuntu do knihovny imagí virtuálního počítače Azure Stack Edge.
  4. Pomocí následujícího postupu nasaďte image Ubuntu jako virtuální počítač:
    1. Zadejte název virtuálního počítače, uživatelské jméno a heslo. Vytvoření dalšího disku je volitelné.
    2. Nastavte konfiguraci sítě.
    3. Na kartě Upřesnit zadejte připravený skript cloud-init.

Požadavky

Dříve začnete, ujistěte se, že máte:

  • Zařízení Azure Stack Edge, které jste aktivovali. Podrobné kroky najdete v tématu Aktivace GPU Azure Stack Edge Pro.

  • Přístup k nejnovější imagi virtuálního počítače s Ubuntu 20.04, a to buď z Azure Marketplace, nebo k vlastní imagi, kterou přinášíte:

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

    Pomocí kroků ve vyhledávání imagí Azure Marketplace získejte image virtuálního počítače.

Příprava skriptu cloud-init

Pokud chcete nasadit modul runtime IoT Edge na virtuální počítač s Ubuntu, použijte během nasazování virtuálního počítače skript cloud-init .

Postupujte podle kroků v jedné z následujících částí:

Použití zřizování symetrického klíče

Pokud chcete připojit zařízení ke službě IoT Hub bez DPS, pomocí kroků v této části připravte skript cloud-init pro stránku Upřesnit vytvoření virtuálního počítače, která nasadí modul runtime IoT Edge a modul runtime kontejneru Nvidia.

  1. Použijte existující IoT Hub nebo vytvořte nové centrum. Pomocí těchto kroků vytvořte IoT Hub.

  2. Pomocí těchto kroků zaregistrujte zařízení Azure Stack Edge ve službě IoT Hub.

  3. Načtěte primární připojovací řetězec ze služby IoT Hub pro vaše zařízení a vložte ho do umístění níže pro DeviceConnectionString.

Skript cloud-init pro zřizování symetrických klíčů


#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

Použití DPS

Pomocí kroků v této části připojte zařízení k DPS a IoT Central. Při vytváření virtuálního počítače připravíte soubor script.sh pro nasazení modulu runtime IoT Edge.

  1. Použijte existující IoT Hub a DPS nebo vytvořte novou službu IoT Hub.

  2. Přejděte k prostředku DPS a vytvořte individuální registraci. 

    1. Přejděte do služby Device Provisioning Service>Manage enrollments>Add individual enrollment.
    2. Ujistěte se, že je výběr symetrického klíče pro typ ověření identity a zařízení IoT Edge true. Výchozí výběr je False.
    3. Načtěte následující informace ze stránky prostředku DPS:
      • ID registrace. Doporučujeme použít stejné ID jako ID zařízení pro ioT Hub.
      • Obor ID, který je k dispozici v nabídce Přehled
      • Primární klíč SAS z nabídky Individuální registrace
  3. Zkopírujte a vložte hodnoty ze služby IoT Hub (IDScope) a DPS (RegistrationID, Symetrický klíč) do argumentů skriptu.

Skript cloud-init pro službu 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

Nasazení modulu runtime IoT Edge

Nasazení modulu runtime IoT Edge je součástí vytváření virtuálního počítače pomocí skriptu cloud-init uvedeného výše.

Tady jsou základní kroky pro nasazení virtuálního počítače a modulu runtime IoT Edge:

  1. Získejte image virtuálního počítače s Ubuntu z Azure Marketplace. Podrobný postup najdete v pokynech v tématu Použití image Azure Marketplace k vytvoření image virtuálního počítače pro Azure Stack Edge.

    1. Na webu Azure Portal přejděte na Azure Marketplace.
    2. Připojte se ke službě Azure Cloud Shell nebo klientovi s nainstalovaným Rozhraním příkazového řádku Azure. Podrobný postup najdete v rychlém startu pro Bash v Azure Cloud Shellu.

    Poznámka:

    Zavření relace prostředí odstraní všechny proměnné vytvořené během relace prostředí. Opětovné otevření relace bude vyžadovat opětovné vytvoření proměnných.

    c. Spuštěním následujícího příkazu nastavte předplatné.

    az account set –subscription <subscription id>
    
  2. Pomocí kroků v hledání imagí z Azure Marketplace vyhledejte image Ubuntu 20.04 LTS na Webu Azure Marketplace.

    Příklad image Ubuntu 20.04 LTS:

    $urn = Canonical:0001-com-ubuntu-server-focal:20_04-lts:20.04.202007160
    
  3. Vytvořte nový spravovaný disk z image Marketplace. Podrobný postup najdete v tématu Použití image Azure Marketplace k vytvoření image virtuálního počítače pro Azure Stack Edge.

  4. Exportujte virtuální pevný disk ze spravovaného disku do účtu Azure Storage. Podrobný postup najdete v tématu Export virtuálního pevného disku ze spravovaného disku do Služby Azure Storage.

  5. Pomocí těchto kroků vytvořte virtuální počítač s Ubuntu pomocí image virtuálního počítače.

    1. Zadejte skript cloud-init na kartě Upřesnit. Pokud chcete vytvořit virtuální počítač, přečtěte si téma Nasazení virtuálního počítače GPU prostřednictvím webu Azure Portal nebo nasazení virtuálního počítače prostřednictvím webu Azure Portal.

      Snímek obrazovky s kartou Upřesnit konfigurace virtuálního počítače na webu Azure Portal

    2. Zadejte odpovídající připojovací řetězec zařízení v cloud-init pro připojení k zařízení IoT Hub nebo DPS. Podrobné kroky najdete v tématu Zřízení symetrických klíčů nebo zřízení pomocí služby IoT Hub DPS.

      Snímek obrazovky s polem Vlastní data konfigurace virtuálního počítače na webu Azure Portal

Pokud jste během vytváření virtuálního počítače nezadali cloud-init , budete muset po vytvoření virtuálního počítače ručně nasadit modul runtime IoT Edge:

  1. Připojte se k virtuálnímu počítači přes SSH.
  2. Nainstalujte na virtuální počítač modul kontejneru. Podrobný postup najdete v tématu Vytvoření a zřízení zařízení IoT Edge v Linuxu pomocí symetrických klíčů nebo rychlého startu – Nastavení DPS služby IoT Hub pomocí webu Azure Portal.

Ověření modulu runtime IoT Edge

Pomocí těchto kroků ověřte, že je spuštěný modul runtime IoT Edge.

  1. Na webu Azure Portal přejděte k prostředku ioT Hubu.

  2. Vyberte zařízení IoT Edge.

  3. Ověřte, že je spuštěný modul runtime IoT Edge.

    Snímek obrazovky se stavem modulu runtime IoT Edge na webu Azure Portal

    Informace o řešení potíží s konfigurací zařízení IoT Edge najdete v tématu Řešení potíží se zařízením IoT Edge.

Aktualizace modulu runtime IoT Edge

Pokud chcete virtuální počítač aktualizovat, postupujte podle pokynů v tématu Aktualizace IoT Edge. Pokud chcete najít nejnovější verzi Azure IoT Edge, přečtěte si o vydaných verzích Azure IoT Edge.

Další kroky

Pokud chcete nasadit a spustit modul IoT Edge na virtuálním počítači s Ubuntu, přečtěte si postup nasazení modulů IoT Edge.

Pokud chcete nasadit modul DeepStream společnosti Nvidia, přečtěte si téma Nasazení modulu Nvidia DeepStream na virtuálním počítači s Ubuntu ve službě Azure Stack Edge Pro s GPU.

Pokud chcete nasadit NVIDIA DIGITS, přečtěte si téma Povolení GPU v předkompilovaném modulu NVIDIA.