التشغيل السريع: إدارة جهاز IoT ظاهري واحد باستخدام Azure CLI
مهم
لم يعد هذا المستند محدثا وسيتم إزالته. للحصول على إرشادات up-to-date حول تجربة سيناريوهات OSConfig:
- أولا، اتبع الخطوات الواردة في إنشاء بيئة مختبر OSConfig (باستخدام Azure IoT) في 5 دقائق
- بعد ذلك، جرب أيا من السيناريوهات من: ما الذي يمكنني توفيره وإدارته؟
الهدف من هذا التشغيل السريع هو التعرف على الإدارة عن بعد لأجهزة IoT/Edge من خلال OSConfig ل IoT. في الجزء الأول، ستقوم بإعداد بيئة اختبار، بما في ذلك إنشاء جهاز ظاهري للعمل كجهاز IoT ظاهري. في الجزء الثاني، ستقوم بتنفيذ العديد من إجراءات إدارة الأجهزة، على سبيل المثال:
- استرداد عنوان IP للجهاز عن بعد
- اختبار اتصال نقطة النهاية عن بعد من منظور الجهاز
- إعادة تشغيل الجهاز عن بعد
- والمزيد
يستخدم هذا التشغيل السريع مثالا لجهاز واحد. لاستخدام OSConfig على نطاق واسع، يمكنك استخدام Iot Hub Device Management الخدمات كوحدة تحكم، بدلا من أوامر Azure CLI الفردية.
المتطلبات المسبقه
- ستحتاج إلى حساب Azure مع اشتراك نشط. إذا لزم الأمر، يمكنك إنشاء حساب مجانا.
- ستستخدم بيئة
Azure Cloud Shell - ملاحظة: إذا كانت هذه هي المرة الأولى التي تستخدم فيها Azure Cloud Shell، فسيرشدك المدخل خلال إنشاء بعض مساحة التخزين قبل المتابعة. هذا أمر طبيعي.
- ملاحظة: يحتوي Azure Cloud Shell بالفعل على أحدث أدوات Azure CLI، ويتم تسجيل الدخول تلقائيا إلى حساب Azure الخاص بك. إذا كنت تفضل استخدام بيئة
bash
الخاصة بك بدلا من cloud shell، يمكنك تثبيت وتكوين azure CLI في بيئةbash
الخاصة بك.
- ستحتاج إلى ملحق Azure IOT ل Azure CLI، والذي يمكن إضافته باستخدام الأمر التالي:
az extension add --name azure-iot
لقطة شاشة
التحقق من المتطلبات الأساسية
- من Azure Cloud Shell (أو بيئة
bash
البديلة)، تأكد من تسجيل دخول Azure CLI إلى حساب Azure وسياق الاشتراك الذي ترغب في استخدامه.
az account show
لقطة شاشة
إذا كنت بحاجة إلى تسجيل الدخول باستخدام حساب مختلف أو تغيير الاشتراكات، يمكنك استخدام أوامر az login
az account set
.
نظرة عامة على بيئة التشغيل السريع
الجزء الأول: إعداد بيئتك
1.1: إنشاء موارد Azure IoT
1.1.1: تحديد اسم فريد لمركز IoT
ستحتاج إلى إنشاء اسم فريد لمركز IoT، مثل "QuickStart12345" أو "HelloWorld98765". سيتم استخدام هذا الاسم بشكل متكرر في الأوامر اللاحقة، لذلك سنقوم بتخزينه في متغير bash، مثل ذلك:
# In the following command replace <Your_Made_Up_Name_Here>
# with your own preferred hub name, for example:
# MY_IOT_HUB_NAME="MyQuickStart54321"
MY_IOT_HUB_NAME="<Your_Made_Up_Name_Here>"
المتغير
1.1.2: إنشاء مجموعة موارد ومركز IoT
az group create --resource-group QuickstartOSConfig --location westus
az iot hub create --resource-group QuickstartOSConfig --name "$MY_IOT_HUB_NAME" --query id
لقطة شاشة
لقطة شاشة
بقشيش
إذا فشل الأمر az iot hub create...
مع وجود خطأ في عدم توفر الاسم، فهذا يعني أن الاسم الذي اخترته كان قيد الاستخدام بالفعل في مكان آخر في Azure. لحل هذه المشكلة، كرر الخطوة MY_IOT_HUB_NAME="<Your_Made_Up_Name_Here>"
أعلاه باسم جديد وفريد، ثم جرب الأمر az iot hub create ...
مرة أخرى.
بقشيش
ليس من غير المعتاد أن يستغرق الأمر az iot hub create...
بضع دقائق لإكماله.
1.1.3: إنشاء معرف الجهاز والحصول على سلسلة اتصال الجهاز
az iot hub device-identity create --hub-name "$MY_IOT_HUB_NAME" -d device01 --query deviceId
az iot hub device-identity connection-string show --hub-name "$MY_IOT_HUB_NAME" --device-id device01
لقطة شاشة
بقشيش
دون قيمة connectionString
التي تم إرجاعها بواسطة الأمر الأخير (يبدأ HostName=
). ستستخدم سلسلة الاتصال هذه في خطوة لاحقة.
1.2: إنشاء جهاز Azure ظاهري للعمل كجهاز إنترنت الأشياء الظاهري
استخدم الأمر التالي لإنشاء جهاز ظاهري.
az vm create --resource-group QuickstartOSConfig --name device01 --image Canonical:UbuntuServer:18.04-lts:latest --admin-username azureuser --generate-ssh-keys --query publicIpAddress
لقطة شاشة
بقشيش
دون عنوان IP إرجاعه بواسطة الأمر الأخير. ستستخدم هذا العنوان في الخطوة التالية.
1.3: تثبيت برنامج العميل على جهاز IoT الظاهري
1.3.1: إنشاء الوصول الطرفي إلى الجهاز الظاهري
تحتاج الأوامر القليلة التالية إلى تشغيل على الجهاز الظاهري الذي أنشأته للتو. استخدم SSH للاتصال:
# In the following command, replace <public ip address from previous step> with
# the actual IP address. For example:
# ssh azureuser@1.2.3.4
ssh azureuser@<ip address from previous step>
لقطة شاشة أوامر ssh
بقشيش
قد يطلب منك عميل ssh كتابة yes
من أجل المتابعة. هذا أمر طبيعي.
بقشيش
قبل المتابعة، تحقق من أنك الآن متصل بجهاز IoT الظاهري. يجب أن يكون موجه الأوامر قد تغير من <your name>@azure:
إلى azureuser@device01:
. إذا لم يتم تغيير موجه الأوامر إلى azureuser@device01:
، فقم بتشغيل الأمر ssh
أعلاه مرة أخرى.
1.3.2: على الجهاز الظاهري، تثبيت aziot-identity-service
sudo apt-get update
curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add
sudo apt-add-repository https://packages.microsoft.com/ubuntu/18.04/multiarch/prod
sudo apt-get update
sudo apt install -y aziot-identity-service
لقطة شاشة
لقطة شاشة
1.3.3: على الجهاز الظاهري، تطبيق سلسلة الاتصال
تكوين الجهاز للمصادقة على Azure IoT باستخدام الأمر التالي. ستستخدم قيمة سلسلة الاتصال التي حصلت عليها سابقا في إنشاء موارد Azure IoT.
sudo aziotctl config mp --connection-string "<your connection string>"
sudo aziotctl config apply
لقطة شاشة
1.3.4: على الجهاز الظاهري، تثبيت حزمة OSConfig ولاحظ أنها قيد التشغيل
sudo apt install -y osconfig
sudo systemctl status osconfig | grep --color=never Active
لقطة شاشة
1.2.5: الخروج من جلسة SSH
exit
الجزء الثاني: استخدام OSConfig ل IoT
لقد صنعتها! الآن بعد أن تم إعداد البيئة، يمكننا البدء في استخدام OSConfig للحصول على وتعيين التكوين والحالة على مستوى المضيف من خلال مركز IoT. من Azure Cloud Shell أو الكمبيوتر الخاص بك، استخدم أوامر Azure CLI التالية لإكمال كل مثال.
2.1: هل هذا الشيء قيد التشغيل؟
سنبدأ بالحصول على IoT Hub الخاص بالجهاز deviceId
، ونظهر أن OSConfig نشط.
az iot hub query --hub-name "$MY_IOT_HUB_NAME" -q "select deviceId,moduleId,connectionState from devices.modules where deviceID='device01' and moduleId='osconfig'"
لقطة شاشة
2.2: الحصول على حالة شبكة الجهاز، مثل عناوين IP وخوادم DNS، لأي أجهزة ممكنة ل OSConfig في IoT Hub
هناك العديد من حالات الاستخدام للإبلاغ عن حالة الشبكة من الأجهزة المدارة. على سبيل المثال، قد تحتاج إلى عنوان IP المحلي لتوصيل دفق فيديو IP محلي بالمثل قد ترغب في الإبلاغ عن خوادم DNS المستخدمة لاستكشاف الأخطاء وإصلاحها أو للتأكد من أن الأجهزة تستخدم البنية الأساسية المتوقعة للشبكة. يسترد المثال التالي عناوين IP وخوادم DNS المعينة لكل محول شبكة.
az iot hub query --hub-name "$MY_IOT_HUB_NAME" -q "select deviceId,properties.reported.Networking.NetworkConfiguration.IpAddresses,properties.reported.Networking.NetworkConfiguration.DnsServers from devices.modules where moduleId='osconfig'"
لقطة شاشة
بقشيش
معلومات IP التي يتم إرجاعها من منظور الجهاز، تتطابق مع ما يمكنك تشغيله ifconfig
أو ip address
محليا على الجهاز. يتم توجيه عنوان IP العام Azure (المستخدم سابقا ل SSH) خارج الجهاز الظاهري، لذلك لا ينظر إليه هنا.
2.3: تكوين نهج القياس عن بعد لخدمة Azure Device Health Service (ADHS)، والتحقق من التوافق
ADHS هو عامل تشخيص مضمن في بعض الأجهزة. لا يحتوي الجهاز الظاهري الذي أنشأته للتو على ADHS مثبت، ولكن لا يزال بإمكاننا تعيين النهج بشكل استباقي كمثال.
يعين الأمر الأول الخاصية المزدوجة المطلوبة ل ADHS إلى 2
(مما يعني الاشتراك). يقارن الأمر الثاني بين الإصدارات المطلوبة (التي قمت بتعيينها أنت والمسؤول) والإصدارات التي تم الإبلاغ عنها (المرسلة من قبل الجهاز) للخاصية للتحقق من تلقي الجهاز للنهج وتطبيقه.
az iot hub module-twin update --hub-name "$MY_IOT_HUB_NAME" -d device01 -m osconfig --desired '{"Settings":{"__t":"c","DeviceHealthTelemetryConfiguration":2}}' > /dev/null
az iot hub query --hub-name "$MY_IOT_HUB_NAME" -q "select deviceId,properties.desired.Settings.DeviceHealthTelemetryConfiguration AS ADHSLevel_Desired,properties.reported.Settings.DeviceHealthTelemetryConfiguration.value AS ADHSLevel_Reported from devices.modules where moduleId='osconfig'"
لقطة شاشة
2.4: تطبيق تكوين مخصص (مثال المنطقة الزمنية)
تمكنك ميزة CommandRunner
من OSConfig من الحصول على أي شيء تقريبا وتعيينه على الجهاز. يعين هذا المثال المنطقة الزمنية لنظام التشغيل للجهاز إلى UTC. فرض منطقة زمنية موحدة على نقاط النهاية (بغض النظر عن موقعها الفعلي) ممارسة شائعة لتحسين معالجة الطابع الزمني في جميع أنحاء الحل الموزع.
يخبر أمر Azure CLI التالي OSConfig بتعيين المنطقة الزمنية باستخدام timedatectl
، والإبلاغ عن المنطقة الزمنية الناتجة.
az iot hub module-twin update --hub-name "$MY_IOT_HUB_NAME" -d device01 -m osconfig --desired '{"CommandRunner":{"__t":"c","CommandArguments":{"CommandId":"my_timezone_config", "Action":3, "Arguments": "timedatectl set-timezone UTC; timedatectl | grep zone | tr -d '[:space:]'"}}}' --query "properties.desired.CommandRunner"
لقطة شاشة
يظهر الإخراج أننا قمنا بتعيين الأمر المطلوب في التوأم. للتأكد من أنه يعمل، سنتخذ خطوة إضافية. أولا، سننتظر 30 ثانية على الأقل إعطاء الوقت للجهاز لتلقي الأمر ومعالجته وتحديث التوأم بالنتائج.
بعد الانتظار 30 ثانية على الأقل منذ الأمر السابق، استخدم ما يلي لاسترداد الإخراج:
az iot hub query --hub-name "$MY_IOT_HUB_NAME" -q "select deviceId,properties.reported.CommandRunner.CommandStatus from devices.modules where moduleId='osconfig'"
لقطة شاشة
2.5: اختبار اتصال الجهاز (مثال ping)
يستخدم هذا المثال ميزة CommandRunner
مع ping
لاختبار اتصال الشبكة من منظور الجهاز.
az iot hub module-twin update --hub-name "$MY_IOT_HUB_NAME" -d device01 -m osconfig --desired '{"CommandRunner":{"__t":"c","CommandArguments":{"CommandId":"connectivity_test_1", "Action":3, "Arguments":"ping -c 2 example.com"}}}' --query "properties.desired.CommandRunner"
لقطة شاشة
كما هو الحال مع المثال السابق، يظهر إخراج az iot hub module-twin update
أننا قمنا بتعيين خاصية الأمر المطلوبة على التوأم، وسنستخدم خطوة ثانية لاسترداد النتائج.
بعد الانتظار 30 ثانية على الأقل منذ الأمر السابق، استخدم ما يلي لاسترداد النتائج:
az iot hub query --hub-name "$MY_IOT_HUB_NAME" -q "select deviceId,properties.reported.CommandRunner.CommandStatus from devices.modules where moduleId='osconfig'"
لقطة شاشة
2.6: إعادة التشغيل أو إيقاف التشغيل باستخدام إجراءات CommandRunner المحددة مسبقا
يعيد المثال التالي تشغيل الجهاز. إذا كنت ترغب في إيقاف التشغيل بدلا من ذلك، فقم بتغيير Action: 1
إلى Action: 2
في قيمة الخاصية المطلوبة.
az iot hub module-twin update --hub-name "$MY_IOT_HUB_NAME" -d device01 -m osconfig --desired '{"CommandRunner":{"__t":"c","CommandArguments":{"CommandId":"my_reboot_command", "Action":1}}}' --query "properties.desired.CommandRunner"
لقطة شاشة
تنظيف الموارد
إذا كنت لا تنوي الاحتفاظ بأي من الموارد، يمكنك حذفها عن طريق حذف مجموعة الموارد التي قمت بإنشائها سابقا.
az group delete --resource-group QuickstartOSConfig
لقطة شاشة
الخطوات التالية
- استخدم هذا الدليل جهازا واحدا فقط للبدء بسرعة. لتكوين الأجهزة على نطاق واسع، يمكنك استخدام OSConfig مع IoT Hub Device Management مع OSConfig.
- لمعرفة المزيد حول OSConfig، راجع: وثائق OSConfig.