Bagikan melalui


Menyebarkan IoT Edge pada VM Ubuntu di Azure Stack Edge

BERLAKU UNTUK: Ya untuk Pro GPU SKUAzure Stack Edge Pro - GPUYa untuk Pro 2 SKUAzure Stack Edge Pro 2Ya untuk Pro R SKUAzure Stack Edge Pro RYa untuk Mini R SKUAzure Stack Edge Mini R

Artikel ini menjelaskan cara menyebarkan runtime IoT Edge pada VM Ubuntu yang berjalan di perangkat Azure Stack Edge Anda. Untuk pekerjaan pengembangan baru, gunakan metode penyebaran layanan mandiri yang dijelaskan dalam artikel ini karena menggunakan versi perangkat lunak terbaru.

Alur tingkat tinggi

Aliran tingkat tinggi adalah sebagai berikut:

  1. Membuat atau mengidentifikasi instans IoT Hub atau Azure IoT Hub Device Provisioning Service (DPS ).
  2. Gunakan Azure CLI untuk memperoleh gambar VM Ubuntu 20.04 LTS.
  3. Unggah gambar Ubuntu ke pustaka gambar VM Azure Stack Edge.
  4. Sebarkan gambar Ubuntu sebagai VM menggunakan langkah-langkah berikut:
    1. Berikan nama VM, nama pengguna, dan kata sandi. Membuat disk lain bersifat opsional.
    2. Siapkan konfigurasi jaringan.
    3. Berikan skrip cloud-init yang disiapkan pada tab Tingkat Lanjut.

Prasyarat

Sebelum mulai, pastikan bahwa Anda memiliki:

  • Perangkat Azure Stack Edge yang telah Anda aktifkan. Untuk langkah-langkah mendetail, lihat Mengaktifkan Azure Stack Edge Pro GPU.

  • Akses ke gambar VM Ubuntu 20.04 terbaru, baik gambar dari Marketplace Azure atau gambar kustom yang Anda bawa:

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

    Gunakan langkah-langkah dalam Mencari gambar Marketplace Azure untuk memperoleh gambar VM.

Menyiapkan skrip cloud-init

Untuk menyebarkan runtime IoT Edge ke Ubuntu VM, gunakan skrip cloud-init selama penyebaran VM.

Gunakan langkah-langkah di salah satu bagian berikut:

Menggunakan provisi kunci konten

Untuk menyambungkan perangkat Anda ke IoT Hub tanpa DPS, gunakan langkah-langkah di bagian ini untuk menyiapkan skrip cloud-init untuk halaman Tingkat Lanjut pembuatan VM untuk menyebarkan runtime IoT Edge dan runtime kontainer Nvidia.

  1. Gunakan IoT Hub yang sudah ada atau buat Hub baru. Gunakan langkah-langkah ini untuk membuat IoT Hub.

  2. Gunakan langkah-langkah ini untuk mendaftarkan perangkat Azure Stack Edge Anda di IoT Hub.

  3. Ambil String Koneksi Utama dari IoT Hub untuk perangkat Anda, lalu tempelkan ke lokasi di bawah ini untuk DeviceConnectionString.

Skrip cloud-init untuk provisi kunci konten


#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

Menggunakan DPS

Gunakan langkah-langkah di bagian ini untuk menyambungkan perangkat Anda ke DPS dan IoT Central. Anda akan menyiapkan file script.sh untuk menyebarkan runtime IoT Edge saat membuat VM.

  1. Gunakan IoT Hub dan DPS yang ada, atau buat IoT Hub baru.

  2. Buka sumber daya DPS dan buat pendaftaran individu. 

    1. Buka Device Provisioning Service>Kelola pendaftaran>Tambahkan pendaftaran individual.
    2. Pastikan bahwa pilihan untuk Kunci Konten untuk jenis pengesahan dan perangkat IoT Edge adalah True. Pilihan defaultnya adalah False.
    3. Ambil informasi berikut dari halaman sumber daya DPS:
      • ID Pendaftaran. Kami menyarankan agar Anda menggunakan ID yang sama dengan ID Perangkat untuk IoT Hub Anda.
      • Cakupan ID yang tersedia di menu Gambaran Umum.
      • Kunci SAS Utama dari menu Pendaftaran Individu.
  3. Salin dan tempel nilai dari IoT Hub (IDScope) dan DPS (RegistrationID, Symmetric Key) ke dalam argumen skrip.

Skrip Cloud-init untuk 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

Menyebarkan runtime IoT Edge

Menyebarkan runtime IoT Edge adalah bagian dari pembuatan VM, menggunakan skrip cloud-init yang disebutkan di atas.

Berikut adalah langkah-langkah tingkat tinggi untuk menyebarkan runtime VM dan IoT Edge:

  1. Dapatkan gambar VM Ubuntu dari Marketplace Azure. Untuk langkah-langkah terperinci, ikuti instruksi dalam Menggunakan gambar Marketplace Azure untuk membuat gambar VM untuk Azure Stack Edge Anda.

    1. Di portal Azure, buka Marketplace Azure.
    2. Sambungkan ke Azure Cloud Shell atau klien dengan Azure CLI terinstal. Untuk langkah-langkah mendetail, lihat Mulai Cepat untuk Bash di Azure Cloud Shell.

    Catatan

    Menutup sesi shell akan menghapus semua variabel yang dibuat selama sesi shell. Membuka kembali sesi akan memerlukan pembuatan ulang variabel.

    c. Jalankan perintah berikut untuk mengatur langganan.

    az account set –subscription <subscription id>
    
  2. Gunakan langkah-langkah dalam Mencari gambar Marketplace Azure untuk mencari Marketplace Azure gambar Ubuntu 20.04 LTS.

    Contoh gambar Ubuntu 20.04 LTS:

    $urn = Canonical:0001-com-ubuntu-server-focal:20_04-lts:20.04.202007160
    
  3. Buat disk terkelola baru dari citra Marketplace. Untuk langkah-langkah mendetail, lihat Menggunakan gambar Marketplace Azure untuk membuat gambar VM untuk Azure Stack Edge Anda.

  4. Ekspor VHD dari disk terkelola ke akun Azure Storage. Untuk langkah-langkah mendetail, lihat Mengekspor VHD dari disk terkelola ke Azure Storage.

  5. Ikuti langkah-langkah ini untuk membuat VM Ubuntu menggunakan gambar VM.

    1. Tentukan skrip cloud-init pada tab Tingkat Lanjut. Untuk membuat VM, lihat Menyebarkan VM GPU melalui portal Azure atau Menyebarkan VM melalui portal Azure.

      Cuplikan layar tab Tingkat Lanjut konfigurasi VM di portal Azure.

    2. Tentukan string koneksi perangkat yang sesuai di cloud-init untuk menyambungkan ke perangkat IoT Hub atau DPS. Untuk langkah-langkah mendetail, lihat Memprovisikan dengan kunci konten atau Provisi dengan DPS IoT Hub.

      Cuplikan layar bidang Data kustom konfigurasi VM di portal Azure.

Jika Anda tidak menentukan cloud-init selama pembuatan VM, Anda harus menyebarkan runtime IoT Edge secara manual setelah VM dibuat:

  1. Sambungkan ke VM melalui SSH.
  2. Instal mesin kontainer pada VM. Untuk langkah-langkah mendetail, lihat Membuat dan memprovisikan perangkat IoT Edge di Linux menggunakan kunci konten atau Mulai Cepat - Menyiapkan DPS IoT Hub dengan portal Azure.

Memverifikasi runtime IoT Edge

Gunakan langkah-langkah ini untuk memverifikasi bahwa runtime IoT Edge Anda berjalan.

  1. Buka sumber daya IoT Hub di portal Azure.

  2. Pilih perangkat IoT Edge.

  3. Verifikasi bahwa runtime IoT Edge sedang berjalan.

    Cuplikan layar status runtime IoT Edge di portal Azure.

    Untuk memecahkan masalah konfigurasi perangkat IoT Edge Anda, lihat Memecahkan masalah perangkat IoT Edge Anda.

Memperbarui runtime IoT Edge

Untuk memperbarui VM, ikuti instruksi di Memperbarui IoT Edge. Untuk menemukan versi terbaru Azure IoT Edge, lihat Rilis Azure IoT Edge.

Langkah berikutnya

Untuk menyebarkan dan menjalankan modul IoT Edge di VM Ubuntu Anda, lihat langkah-langkah dalam Menyebarkan modul IoT Edge.

Untuk menyebarkan modul DeepStream Nvidia, lihat Menyebarkan modul Nvidia DeepStream pada VM Ubuntu di Azure Stack Edge Pro dengan GPU.

Untuk menyebarkan NVIDIA DIGITS, lihat Mengaktifkan GPU dalam modul NVIDIA prefabrikasi.