نشر IoT Edge على جهاز Ubuntu ظاهري على Azure Stack Edge
ينطبق على:Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
توضح هذه المقالة كيفية نشر وقت تشغيل IoT Edge على جهاز Ubuntu ظاهري يعمل على جهاز Azure Stack Edge. لعمل التطوير الجديد، استخدم أسلوب النشر ذاتي الخدمة الموضحة في هذه المقالة لأنه يستخدم أحدث إصدار من البرامج.
تدفق عالي المستوى
التدفق عالي المستوى كما يلي:
- إنشاء أو تحديد مثيل IoT Hub أو Azure IoT Hub Device Provisioning Service (DPS ).
- استخدم Azure CLI للحصول على صورة Ubuntu 20.04 LTS VM.
- قم بتحميل صورة Ubuntu إلى مكتبة صور Azure Stack Edge VM.
- انشر صورة Ubuntu كجهاز ظاهري باستخدام الخطوات التالية:
- أدخل اسم الجهاز الظاهري واسم المستخدم وكلمة المرور. إنشاء قرص آخر اختياري.
- إعداد تكوين الشبكة.
- قم بتوفير برنامج نصي معد ل cloud-init في علامة التبويب Advanced .
المتطلبات الأساسية
قبل أن تبدأ، تأكد من أن لديك:
جهاز Azure Stack Edge الذي قمت بتنشيطه. للحصول على خطوات مفصلة، راجع تنشيط Azure Stack Edge Pro GPU.
الوصول إلى أحدث صورة Ubuntu 20.04 VM، إما الصورة من Azure Marketplace أو صورة مخصصة تقوم بإحضارها:
$urn = Canonical:0001-com-ubuntu-server-focal:20_04-lts:20.04.202007160
استخدم الخطوات في البحث عن صور Azure Marketplace للحصول على صورة الجهاز الظاهري.
إعداد البرنامج النصي ل cloud-init
لنشر وقت تشغيل IoT Edge على جهاز Ubuntu الظاهري، استخدم البرنامج النصي cloud-init أثناء نشر الجهاز الظاهري.
استخدم الخطوات في أحد الأقسام التالية:
- قم بإعداد البرنامج النصي cloud-init مع توفير مفتاح متماثل.
- قم بإعداد البرنامج النصي cloud-init باستخدام IoT Hub DPS.
استخدام توفير المفتاح المتماثل
لتوصيل جهازك ب IoT Hub بدون DPS، استخدم الخطوات الواردة في هذا القسم لإعداد برنامج نصي للتهيئة السحابية للصفحة المتقدمة لإنشاء الجهاز الظاهري لنشر وقت تشغيل IoT Edge ووقت تشغيل حاوية Nvidia.
استخدم IoT Hub موجود أو أنشئ مركز جديد. استخدم هذه الخطوات لإنشاء مركز IoT.
استخدم هذه الخطوات لتسجيل جهاز Azure Stack Edge في IoT Hub.
استرجع Primary الاتصال ion String من IoT Hub لجهازك، ثم الصقه في الموقع أدناه للجهاز الاتصال ionString.
البرنامج النصي Cloud-init لتزويد المفاتيح المتماثلة
#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
استخدام DPS
استخدم الخطوات الواردة في هذا القسم لتوصيل جهازك ب DPS وIoT Central. ستقوم بإعداد ملف script.sh لنشر وقت تشغيل IoT Edge أثناء إنشاء الجهاز الظاهري.
استخدم IoT Hub وDPS الحاليين، أو أنشئ IoT Hub جديدا.
- استخدم هذه الخطوات لإنشاء مركز IoT.
- استخدم هذه الخطوات لإنشاء DPS، ثم ربط IoT Hub إلى نطاق DPS.
انتقل إلى مورد DPS وأنشئ تسجيلا فرديا.
- انتقل إلى Device Provisioning Service>Manage enrollments>Add individual enrollment.
- تأكد من أن تحديد المفتاح المتماثل لنوع التصديق وجهاز IoT Edge هو True. التحديد الافتراضي هو False.
- استرداد المعلومات التالية من صفحة مورد DPS:
- معرف التسجيل. نوصي باستخدام نفس معرف الجهاز ل IoT Hub.
- نطاق المعرف المتوفر في قائمة نظرة عامة.
- مفتاح SAS الأساسي من قائمة التسجيل الفردي.
انسخ القيم والصقها من IoT Hub (IDScope) وDPS (RegistrationID، وSymmetric Key) في وسيطات البرنامج النصي.
البرنامج النصي Cloud-init ل 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
نشر وقت تشغيل IoT Edge
يعد نشر وقت تشغيل IoT Edge جزءا من إنشاء الجهاز الظاهري، باستخدام البرنامج النصي cloud-init المذكور أعلاه.
فيما يلي الخطوات عالية المستوى لنشر الجهاز الظاهري ووقت تشغيل IoT Edge:
احصل على صورة Ubuntu VM من Azure Marketplace. للحصول على خطوات مفصلة، اتبع الإرشادات الواردة في استخدام صورة Azure Marketplace لإنشاء صورة الجهاز الظاهري ل Azure Stack Edge.
- في مدخل Microsoft Azure، انتقل إلى Azure Marketplace.
- الاتصال إلى Azure Cloud Shell أو عميل مع تثبيت Azure CLI. للحصول على خطوات مفصلة، راجع التشغيل السريع ل Bash في Azure Cloud Shell.
إشعار
سيؤدي إغلاق جلسة shell إلى حذف جميع المتغيرات التي تم إنشاؤها أثناء جلسة عمل shell. تتطلب إعادة فتح جلسة العمل إعادة إنشاء المتغيرات.
ج. قم بتشغيل الأمر التالي لتعيين الاشتراك.
az account set –subscription <subscription id>
استخدم الخطوات في البحث عن صور Azure Marketplace للبحث في Azure Marketplace عن صورة Ubuntu 20.04 LTS.
مثال على صورة Ubuntu 20.04 LTS:
$urn = Canonical:0001-com-ubuntu-server-focal:20_04-lts:20.04.202007160
إنشاء قرص مدار جديد من صورة Marketplace. للحصول على خطوات مفصلة، راجع استخدام صورة Azure Marketplace لإنشاء صورة الجهاز الظاهري ل Azure Stack Edge.
تصدير VHD من القرص المدار إلى حساب Azure Storage. للحصول على خطوات مفصلة، راجع تصدير VHD من القرص المدار إلى Azure Storage.
اتبع هذه الخطوات لإنشاء جهاز ظاهري Ubuntu باستخدام صورة الجهاز الظاهري.
حدد البرنامج النصي cloud-init في علامة التبويب Advanced. لإنشاء جهاز ظاهري، راجع نشر GPU VM عبر مدخل Microsoft Azure أو نشر الجهاز الظاهري عبر مدخل Microsoft Azure.
حدد سلسلة الاتصال الجهاز المناسبة في cloud-init للاتصال بجهاز IoT Hub أو DPS. للحصول على خطوات مفصلة، راجع التوفير باستخدام مفاتيح متماثلة أو توفير مع IoT Hub DPS.
إذا لم تحدد cloud-init أثناء إنشاء الجهاز الظاهري، يتعين عليك نشر وقت تشغيل IoT Edge يدويا بعد إنشاء الجهاز الظاهري:
- الاتصال إلى الجهاز الظاهري عبر SSH.
- تثبيت محرك الحاوية على الجهاز الظاهري. للحصول على خطوات مفصلة، راجع إنشاء وتوفير جهاز IoT Edge على Linux باستخدام مفاتيح متماثلة أو التشغيل السريع - إعداد IoT Hub DPS باستخدام مدخل Microsoft Azure.
تحقق من وقت تشغيل IoT Edge
استخدم هذه الخطوات للتحقق من تشغيل وقت تشغيل IoT Edge.
انتقل إلى مورد IoT Hub في مدخل Microsoft Azure.
حدد جهاز IoT Edge.
تحقق من تشغيل وقت تشغيل IoT Edge.
لاستكشاف أخطاء تكوين جهاز IoT Edge وإصلاحها، راجع استكشاف أخطاء جهاز IoT Edge وإصلاحها.
تحديث وقت تشغيل IoT Edge
لتحديث الجهاز الظاهري، اتبع الإرشادات الواردة في تحديث IoT Edge. للعثور على أحدث إصدار من Azure IoT Edge، راجع إصدارات Azure IoT Edge.
الخطوات التالية
لنشر وتشغيل وحدة IoT Edge على جهاز Ubuntu الظاهري، راجع الخطوات في نشر وحدات IoT Edge النمطية.
لنشر وحدة DeepStream الخاصة ب Nvidia، راجع نشر الوحدة النمطية Nvidia DeepStream على Ubuntu VM على Azure Stack Edge Pro مع GPU.
لنشر NVIDIA DIGITS، راجع تمكين وحدة معالجة الرسومات في وحدة NVIDIA مسبقة الصنع.
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ