التشغيل السريع: إدارة جهاز IoT ظاهري واحد باستخدام Azure CLI

مهم

لم يعد هذا المستند محدثا وسيتم إزالته. للحصول على إرشادات up-to-date حول تجربة سيناريوهات OSConfig:

  1. أولا، اتبع الخطوات الواردة في إنشاء بيئة مختبر OSConfig (باستخدام Azure IoT) في 5 دقائق
  2. بعد ذلك، جرب أيا من السيناريوهات من: ما الذي يمكنني توفيره وإدارته؟

الهدف من هذا التشغيل السريع هو التعرف على الإدارة عن بعد لأجهزة IoT/Edge من خلال OSConfig ل IoT. في الجزء الأول، ستقوم بإعداد بيئة اختبار، بما في ذلك إنشاء جهاز ظاهري للعمل كجهاز IoT ظاهري. في الجزء الثاني، ستقوم بتنفيذ العديد من إجراءات إدارة الأجهزة، على سبيل المثال:

  • استرداد عنوان IP للجهاز عن بعد
  • اختبار اتصال نقطة النهاية عن بعد من منظور الجهاز
  • إعادة تشغيل الجهاز عن بعد
  • والمزيد

يستخدم هذا التشغيل السريع مثالا لجهاز واحد. لاستخدام OSConfig على نطاق واسع، يمكنك استخدام Iot Hub Device Management الخدمات كوحدة تحكم، بدلا من أوامر Azure CLI الفردية.

المتطلبات المسبقه

  1. ستحتاج إلى حساب Azure مع اشتراك نشط. إذا لزم الأمر، يمكنك إنشاء حساب مجانا.
  2. ستستخدم بيئة Azure Cloud Shell
    • ملاحظة: إذا كانت هذه هي المرة الأولى التي تستخدم فيها Azure Cloud Shell، فسيرشدك المدخل خلال إنشاء بعض مساحة التخزين قبل المتابعة. هذا أمر طبيعي.
    • ملاحظة: يحتوي Azure Cloud Shell بالفعل على أحدث أدوات Azure CLI، ويتم تسجيل الدخول تلقائيا إلى حساب Azure الخاص بك. إذا كنت تفضل استخدام بيئة bash الخاصة بك بدلا من cloud shell، يمكنك تثبيت وتكوين azure CLI في بيئة bash الخاصة بك.
  3. ستحتاج إلى ملحق Azure IOT ل Azure CLI، والذي يمكن إضافته باستخدام الأمر التالي:
az extension add --name azure-iot

لقطة شاشة تعرض az extension add --name azure-iot

التحقق من المتطلبات الأساسية

  • من Azure Cloud Shell (أو بيئة bash البديلة)، تأكد من تسجيل دخول Azure CLI إلى حساب Azure وسياق الاشتراك الذي ترغب في استخدامه.
az account show

لقطة شاشة للأمر: az account show

إذا كنت بحاجة إلى تسجيل الدخول باستخدام حساب مختلف أو تغيير الاشتراكات، يمكنك استخدام أوامر az loginaz account set.

نظرة عامة على بيئة التشغيل السريع

رسم تخطيطي للسياق، يظهر استخدام Azure CLI لإنشاء IoT Hub وVM، واستخدامه لاستخدام OSConfig

الجزء الأول: إعداد بيئتك

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>"

لقطة شاشة لمثال bash لتعيين اسم فريد مختار ل IOT Hub MY_IOT_HUB_NAME المتغير

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 group create

لقطة شاشة لأمر az iot hub create

بقشيش

إذا فشل الأمر 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

لقطة شاشة لمثال أوامر az iot

بقشيش

دون قيمة 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

لقطة شاشة لأمر az vm create

بقشيش

دون عنوان 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

لقطة شاشة للأوامر

لقطة شاشة 2 لأوامر apt

1.3.3: على الجهاز الظاهري، تطبيق سلسلة الاتصال

تكوين الجهاز للمصادقة على Azure IoT باستخدام الأمر التالي. ستستخدم قيمة سلسلة الاتصال التي حصلت عليها سابقا في إنشاء موارد Azure IoT.

sudo aziotctl config mp --connection-string "<your connection string>"
sudo aziotctl config apply

لقطة شاشة لأوامر aziotctl

1.3.4: على الجهاز الظاهري، تثبيت حزمة OSConfig ولاحظ أنها قيد التشغيل

sudo apt install -y osconfig
sudo systemctl status osconfig | grep --color=never Active

لقطة شاشة لتثبيت sudo apt -y osconfig

1.2.5: الخروج من جلسة SSH

exit

لقطة شاشة للخروج من جلسة ssh، والعودة إلى جلسة عمل cloud shell

الجزء الثاني: استخدام 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'"

لقطة شاشة لأمر az iot hub query

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'"

لقطة شاشة لاستعلام az iot (إضافي)

بقشيش

معلومات 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'"

لقطة شاشة لاستعلام az iot (مثال إضافي آخر)

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"

لقطة شاشة لأمر تحديث الوحدة النمطية المزدوجة az iot hub

يظهر الإخراج أننا قمنا بتعيين الأمر المطلوب في التوأم. للتأكد من أنه يعمل، سنتخذ خطوة إضافية. أولا، سننتظر 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'"

لقطة شاشة لاستعلام az iot (مثال المنطقة الزمنية)

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 (مثال ping)

كما هو الحال مع المثال السابق، يظهر إخراج 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'"

لقطة شاشة لاستعلام az iot (مثال ping)

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 iot (مثال إعادة التشغيل)

تنظيف الموارد

إذا كنت لا تنوي الاحتفاظ بأي من الموارد، يمكنك حذفها عن طريق حذف مجموعة الموارد التي قمت بإنشائها سابقا.

az group delete --resource-group QuickstartOSConfig

لقطة شاشة az group delete

الخطوات التالية

  • استخدم هذا الدليل جهازا واحدا فقط للبدء بسرعة. لتكوين الأجهزة على نطاق واسع، يمكنك استخدام OSConfig مع IoT Hub Device Management مع OSConfig.
  • لمعرفة المزيد حول OSConfig، راجع: وثائق OSConfig.