Menyebarkan IoT Edge pada VM Ubuntu di Azure Stack Edge
BERLAKU UNTUK: Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure 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:
- Membuat atau mengidentifikasi instans IoT Hub atau Azure IoT Hub Device Provisioning Service (DPS ).
- Gunakan Azure CLI untuk memperoleh gambar VM Ubuntu 20.04 LTS.
- Unggah gambar Ubuntu ke pustaka gambar VM Azure Stack Edge.
- Sebarkan gambar Ubuntu sebagai VM menggunakan langkah-langkah berikut:
- Berikan nama VM, nama pengguna, dan kata sandi. Membuat disk lain bersifat opsional.
- Siapkan konfigurasi jaringan.
- 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.
Gunakan IoT Hub yang sudah ada atau buat Hub baru. Gunakan langkah-langkah ini untuk membuat IoT Hub.
Gunakan langkah-langkah ini untuk mendaftarkan perangkat Azure Stack Edge Anda di IoT Hub.
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.
Gunakan IoT Hub dan DPS yang ada, atau buat IoT Hub baru.
- Gunakan langkah-langkah ini untuk membuat IoT Hub.
- Gunakan langkah-langkah ini untuk membuat DPS, lalu tautkan IoT Hub ke cakupan DPS.
Buka sumber daya DPS dan buat pendaftaran individu. 
- Buka Device Provisioning Service>Kelola pendaftaran>Tambahkan pendaftaran individual.
- Pastikan bahwa pilihan untuk Kunci Konten untuk jenis pengesahan dan perangkat IoT Edge adalah True. Pilihan defaultnya adalah False.
- 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.
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:
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.
- Di portal Azure, buka Marketplace Azure.
- 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>
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
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.
Ekspor VHD dari disk terkelola ke akun Azure Storage. Untuk langkah-langkah mendetail, lihat Mengekspor VHD dari disk terkelola ke Azure Storage.
Ikuti langkah-langkah ini untuk membuat VM Ubuntu menggunakan gambar VM.
Tentukan skrip cloud-init pada tab Tingkat Lanjut. Untuk membuat VM, lihat Menyebarkan VM GPU melalui portal Azure atau Menyebarkan VM melalui portal Azure.
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.
Jika Anda tidak menentukan cloud-init selama pembuatan VM, Anda harus menyebarkan runtime IoT Edge secara manual setelah VM dibuat:
- Sambungkan ke VM melalui SSH.
- 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.
Buka sumber daya IoT Hub di portal Azure.
Pilih perangkat IoT Edge.
Verifikasi bahwa runtime IoT Edge sedang berjalan.
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.