مشاركة عبر


البرنامج التعليمي: تكوين جهاز Azure IoT Edge

ينطبق على: أيقونة نعم IoT Edge 1.1

هام

كان تاريخ انتهاء دعم IoT Edge 1.1 هو 13 ديسمبر 2022. تحقق من دورة حياة المنتج من Microsoft للحصول على معلومات حول كيفية دعم هذا المنتج أو الخدمة أو التقنية أو API. لمزيد من المعلومات حول التحديث إلى أحدث إصدار من IoT Edge، راجع تحديث IoT Edge.

في هذه المقالة، نقوم بتكوين جهاز Azure الظاهري الذي يعمل بنظام Linux ليكون جهاز Azure IoT Edge الذي يعمل كبوابة شفافة. يسمح تكوين البوابة الشفافة للأجهزة بالاتصال بـ Azure IoT Hub من خلال البوابة دون معرفة وجود البوابة. في الوقت نفسه، لا يعرف المستخدم الذي يتفاعل مع الأجهزة في IoT Hub جهاز البوابة الوسيطة. في النهاية، سنضيف تحليلات الحافة إلى نظامنا عن طريق إضافة وحدات IoT Edge إلى البوابة الشفافة.

إشعار

تنطبق المفاهيم الواردة في هذا البرنامج التعليمي على جميع إصدارات IoT Edge؛ ولكن نموذج الجهاز الذي تقوم بإنشائه لتجربة السيناريو يعمل على IoT Edge الإصدار 1.1.

عادة ما ينفذ مطورو السحابة الخطوات الواردة في هذه المقالة.

في هذا البرنامج التعليمي، ستتعلّم طريقة:

  • إنشاء شهادات للسماح لجهاز البوابة لديك بالاتصال بأمان بأجهزة المراحل النهائية.
  • إنشاء جهاز IoT Edge
  • إنشاء جهاز ظاهري Azure لمحاكاة جهاز IoT Edge.

المتطلبات الأساسية

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

إنشاء شهادات

لكي يعمل الجهاز كبوابة، فإنه يحتاج إلى الاتصال الآمن بأجهزة المراحل النهائية. باستخدام IoT Edge، يمكنك استخدام البنية التحتية للمفتاح العام (PKI) لإعداد اتصالات آمنة بين الأجهزة. في هذه الحالة، نسمح لجهاز IoT المراحل النهائية بالاتصال بجهاز IoT Edge الذي يعمل كبوابة شفافة. للحفاظ على مستوى أمان معقول، يجب أن يؤكد جهاز المراحل النهائية هوية جهاز IoT Edge. لمزيد من المعلومات حول كيفية استخدام أجهزة IoT Edge للشهادات، راجع تفاصيل استخدام شهادة Azure IoT Edge.

في هذا القسم، نقوم بإنشاء الشهادات الموقعة ذاتيًا باستخدام صورة Docker التي نقوم ببنائها وتشغيلها بعد ذلك. لقد اخترنا استخدام صورة Docker لإكمال هذه الخطوة؛ لأنها تقلل من عدد الخطوات اللازمة لإنشاء الشهادات على جهاز تطوير Windows. لفهم ما قمنا بأتمتته باستخدام صورة Docker، راجع إنشاء شهادات تجريبية لاختبار ميزات جهاز IoT Edge.

  1. تسجيل الدخول لتطوير الجهاز الظاهري.

  2. إنشاء مجلد جديد بالمسار والاسم c:\edgeCertificates.

  3. إذا لم يكن قيد التشغيل بالفعل، فابدأ تشغيل Docker for Windows من القائمة Windows.

  4. فتح Visual Studio Code.

  5. حدد File>Open Folder، ثم حدد C:\source\IoTEdgeAndMlSample\CreateCertificates.

  6. في جزء Explorer ، انقر بزر الماوس الأيمن فوق dockerfile وحدد Build Image.

  7. في مربع الحوار، اقبل القيمة الافتراضية لاسم الصورة والعلامة: createcertificates: الأحدث.

    لقطة شاشة توضح إنشاء الشهادات في Visual Studio Code.

  8. انتظر حتى يكتمل البناء.

    إشعار

    قد ترى تحذيرًا بشأن فقدان مفتاح عام. من الأمان تجاهل هذا التحذير. وبالمثل، سترى تحذيرًا أمنيًا يوصيك بفحص الأذونات، أو إعادة تعيينها على صورتك، وهو أمر آمن يمكن تجاهله في هذه الصورة.

  9. في النافذة الطرفية لـ Visual Studio Code، قم بتشغيل حاوية إنشاء الشهادات.

    docker run --name createcertificates --rm -v c:\edgeCertificates:/edgeCertificates createcertificates /edgeCertificates
    
  10. سيطالب Docker بالوصول إلى محرك الأقراص c:\ . حدد مشاركة.

  11. قدم بيانات الاعتماد لديك عند مطالبتك بذلك.

  12. بعد انتهاء تشغيل الحاوية، تحقق من الملفات التالية في c:\edgeCertificates:

    • c:\edgeCertificates\certs\azure-iot-test-only.root.ca.cert.pem
    • c:\edgeCertificates\certs\new-edge-device-full-chain.cert.pem
    • c:\edgeCertificates\certs\new-edge-device.cert.pem
    • c:\edgeCertificates\certs\new-edge-device.cert.pfx
    • c:\edgeCertificates\private\new-edge-device.key.pem

تحميل الشهادات إلى Azure Key Vault

لتخزين شهاداتنا بأمان وإتاحة الوصول إليها من أجهزة متعددة، سنقوم بتحميل الشهادات إلى Azure Key Vault. كما ترى من القائمة السابقة، لدينا نوعان من ملفات الشهادات: PFX وPEM. سنتعامل مع ملف PFX على أنه شهادات Key Vault ليتم تحميلها إلى Key Vault. ملفات PEM عبارة عن نص عادي، وسنتعامل معها باعتبارها أسرار Key Vault. سنستخدم مثيل Key Vault المقترن بمساحة عمل Azure التعلم الآلي التي أنشأناها عن طريق تشغيل دفاتر ملاحظات Jupyter.

  1. من مدخل Microsoft Azure، انتقل إلى مساحة عمل Azure التعلم الآلي.

  2. من صفحة النظرة العامة لمساحة عمل التعلم الآلي، ابحث عن اسم Key Vault.

    لقطة شاشة تظهر نسخ اسم Key Vault.

  3. على جهاز التطوير لديك، قم بتحميل الشهادات إلى Key Vault. استبدل subscriptionId> وkeyvaultname <>بمعلومات المورد الخاصة بك.<

    c:\source\IoTEdgeAndMlSample\CreateCertificates\upload-keyvaultcerts.ps1 -SubscriptionId <subscriptionId> -KeyVaultName <keyvaultname>
    
  4. إذا تمت مطالبتك، فقم بتسجيل الدخول إلى Azure.

  5. سيتم تشغيل البرنامج النصي لبضع دقائق مع الإخراج الذي يسرد إدخالات Key Vault الجديدة.

    لقطة شاشة تظهر إخراج البرنامج النصي Key Vault.

تسجيل جهاز IoT Edge

لتوصيل جهاز Azure IoT Edge بمركز IoT، نسجل أولاً أحد الأجهزة في المركز. نأخذ سلسلة الاتصال من هوية الجهاز في السحابة، ونستخدمها لتهيئة وقت التشغيل على جهاز IoT Edge لدينا. بعد أن يتصل الجهاز الذي تم تكوينه بالمركز، يمكننا نشر الوحدات النمطية، وإرسال الرسائل. يمكننا أيضًا تغيير تكوين جهاز IoT Edge المادي عن طريق تغيير هوية الجهاز المقابلة في IoT Hub.

في هذا البرنامج التعليمي، نقوم بتسجيل هوية الجهاز الجديدة باستخدام Visual Studio Code. يمكنك أيضًا إكمال هذه الخطوات باستخدام مدخل Microsoft Azure أو Azure CLI. أيًا كانت الطريقة التي تختارها، تأكد من حصولك على سلسلة اتصال الجهاز لجهاز IoT Edge لديك. يمكن العثور على سلسلة اتصال الجهاز في صفحة التفاصيل الخاصة بجهازك على مدخل Microsoft Azure.

  1. على جهاز التطوير لديك، افتح Visual Studio Code.

  2. قم بتوسيع إطار Azure IoT Hub من طريقة عرض Visual Studio Code Explorer .

  3. حدد علامة الحذف، وحدد إنشاء جهاز IoT Edge.

  4. أعطِ اسمًا للجهاز. للراحة، نستخدم اسم aaTurbofanEdgeDevice بحيث يتم فرزه إلى أعلى الأجهزة المدرجة.

  5. يظهر الجهاز الجديد في قائمة الأجهزة.

    لقطة شاشة تعرض طريقة عرض الجهاز في Visual Studio Code Explorer.

إنشاء جهاز ظاهري لـ Azure.

نستخدم جهازًا ظاهريًا Ubuntu 18.04 LTS مع تثبيت وقت تشغيل Azure IoT Edge وتكوينه. يستخدم التوزيع قالب Azure Resource Manager الذي يتم الاحتفاظ به في مستودع مشروع iotedge-vm-deploy . كما أن عملية النشر جهاز IoT Edge الذي قمت بتسجيله في الخطوة السابقة باستخدام سلسلة الاتصال التي توفرها في القالب.

يمكنك نشر الجهاز الظاهري باستخدام مدخل Microsoft Azure أو Azure CLI. سنعرض خطوات مدخل Microsoft Azure. راجع تشغيل Azure IoT Edge على أجهزة Ubuntu الظاهرية لمزيد من المعلومات.

النشر باستخدام زر النشر في Azure

  1. لاستخدام iotedge-vm-deploy قالب ARM لنشر الجهاز الظاهري Ubuntu 18.04 LTS، انقر فوق الزر أدناه:

    التوزيع إلى زر Azure لـ iotedge-vm-deploy

  2. في النافذة التي تم إطلاقها حديثًا، املأ حقول النموذج المتاحة.

    الحقل ‏‏الوصف
    الاشتراك اشتراك Azure النشط لنشر الجهاز الظاهري فيه.
    مجموعة الموارد مجموعة موارد موجودة، أو تم إنشاؤها حديثًا؛ لاحتواء الجهاز الظاهري، والموارد المرتبطة به.
    بادئة تسمية DNS قيمة مطلوبة من اختيارك تُستخدم لبادئة اسم مضيف الجهاز الظاهري.
    اسم مستخدم المسؤول اسم المستخدم المتوفر والامتيازات الجذرية عند النشر.
    سلسلة اتصال الجهاز سلسلة الاتصال جهاز لجهاز تم إنشاؤه داخل IoT Hub المقصود.
    حجم الجهاز الظاهري حجم الجهاز الظاهري الذي سيتم نشره
    إصدار نظام التشغيل Ubuntu إصدار نظام تشغيل Ubuntu الواجب تثبيته على الجهاز الظاهري الرئيسي.
    Location المنطقة الجغرافية لنشر الجهاز الظاهري فيها، يتم تعيين هذه القيمة افتراضيا إلى موقع مجموعة الموارد المحددة.
    نوع المصادقة اختر sshPublicKey أو كلمة المرور وفقا لتفضيلاتك.
    كلمة مرور أو مفتاح المسؤول قيمة مفتاح SSH العام أو قيمة كلمة السر اعتمادًا على اختيار نوع المصادقة.
  3. عند تعبئة كافة الحقول، حدد خانة الاختيار في أسفل الصفحة لقبول الشروط وحدد مراجعة + إنشاء وإنشاء لبدء النشر.

  4. انتقل إلى موقع الجهاز الافتراضي في مدخل Microsoft Azure. يمكنك العثور عليه من خلال مجموعة الموارد الخاصة بك أو عن طريق تحديد الأجهزة الظاهرية ضمن خدمات Azure في الصفحة المقصودة للمدخل.

  5. دون اسم DNS لجهازك الظاهري. ستحتاجه لتسجيل الدخول إلى الجهاز الظاهري.

الاتصال بجهاز IoT Edge

  1. افتح موجه الأوامر، واستخدم الأمر التالي لتسجيل الدخول إلى جهازك الظاهري. أدخل معلوماتك الخاصة لاسم المستخدم واسم DNS بناءً على القسم السابق.

    ssh <adminUsername>@<DNS_name>
    
  2. عند مطالبتك بالتحقق من صحة المضيف، أدخل نعم وحدد Enter.

  3. عند مطالبتك، قدم كلمة المرور.

  4. يعرض Ubuntu رسالة ترحيب، ومن ثم يجب أن تشاهد مطالبة مثل <username>@<machinename>:~$.

تنزيل شهادات Vault الرئيسية

في وقت سابق من هذه المقالة، قمنا بتحميل الشهادات إلى Key Vault لجعلها متاحة لجهاز IoT Edge وجهاز انتقال البيانات من الخادم. يستخدم جهاز انتقال البيانات من الخادم جهاز IoT Edge كبوابة للتواصل مع IoT Hub.

سنتعامل مع جهاز انتقال البيانات من الخادم لاحقا في البرنامج التعليمي. في هذا القسم، قم بتنزيل الشهادات إلى جهاز IoT Edge.

  1. من جلسة SSH على جهاز Linux الظاهري، سجّل الدخول إلى Azure باستخدام Azure CLI.

    az login
    
  2. ستتم مطالبتك بفتح مستعرض إلى صفحة تسجيل الدخول إلى جهاز Microsoft وتوفير رمز فريد. يمكنك تنفيذ هذه الخطوات على الجهاز المحلي. أغلق نافذة المستعرض عند الانتهاء من المصادقة.

  3. عند المصادقة بنجاح، سيقوم جهاز Linux الظاهري بتسجيل الدخول، وسرد اشتراكات Azure.

  4. قم بتعيين اشتراك Azure الذي تريد استخدامه لأوامر Azure CLI.

    az account set --subscription <subscriptionId>
    
  5. إنشاء دليل على الجهاز الظاهري للشهادات.

    sudo mkdir /edgeMlCertificates
    
  6. قم بتنزيل الشهادات التي قمت بتخزينها في خزنة المفاتيح: new-edge-device-full-chain.cert.pem، وnew-edge-device.key.pem، وazure-iot-test-only.root.ca.cert.pem.

    key_vault_name="<key vault name>"
    sudo az keyvault secret download --vault-name $key_vault_name --name new-edge-device-full-chain-cert-pem -f /edgeMlCertificates/new-edge-device-full-chain.cert.pem
    sudo az keyvault secret download --vault-name $key_vault_name --name new-edge-device-key-pem -f /edgeMlCertificates/new-edge-device.key.pem
    sudo az keyvault secret download --vault-name $key_vault_name --name azure-iot-test-only-root-ca-cert-pem -f /edgeMlCertificates/azure-iot-test-only.root.ca.cert.pem
    

تحديث تكوين جهاز IoT Edge

يستخدم وقت تشغيل IoT Edge الملف /etc/iotedge/config.yaml للاستمرار في تكوينه. نحتاج إلى تحديث قسمين من المعلومات في هذا الملف:

  • الشهادات: الشهادات التي يجب استخدامها للاتصالات التي تم إجراؤها مع أجهزة انتقال البيانات من الخادم
  • Hostname: اسم المجال المؤهل بالكامل (FQDN) لجهاز VM IoT Edge

قم بتحديث الشهادات واسم المضيف عن طريق تحرير ملف config.yaml مباشرةً.

  1. افتح الملف config.yaml.

    sudo nano /etc/iotedge/config.yaml
    
  2. قم بتحديث قسم الشهادات في ملف config.yaml عن طريق إزالة البادئة # وتعيين المسار بحيث يبدو الملف مثل المثال التالي:

    certificates:
      device_ca_cert: "/edgeMlCertificates/new-edge-device-full-chain.cert.pem"
      device_ca_pk: "/edgeMlCertificates/new-edge-device.key.pem"
      trusted_ca_certs: "/edgeMlCertificates/azure-iot-test-only.root.ca.cert.pem"
    

    تأكد من أن الشهادات : السطر لا يحتوي على مسافة بيضاء مسبوقة وأن كل شهادة من الشهادات المتداخلة مسافة بادئة بمسافة اثنين.

    سيؤدي النقر بزر الماوس الأيمن في nano إلى لصق محتويات الحافظة في موضع المؤشر الحالي. لاستبدال السلسلة، استخدم أسهم لوحة المفاتيح للانتقال إلى السلسلة التي تريد استبدالها، واحذف السلسلة، ثم انقر بزر الماوس الأيمن للصقها من المخزن المؤقت.

  3. في مدخل Microsoft Azure، انتقل إلى جهازك الظاهري. انسخ اسم DNS (FQDN للجهاز) من قسم نظرة عامة .

  4. ألصق FQDN في قسم اسم المضيف لملف config.yml. تأكد من أن الاسم كله أحرف صغيرة.

    hostname: '<machinename>.<region>.cloudapp.azure.com'
    
  5. احفظ الملف وأغلقه عن طريق تحديد Ctrl+X وY و Enter.

  6. أعد تشغيل البرنامج الخفي لـ IoT Edge.

    sudo systemctl restart iotedge
    
  7. تحقق من حالة البرنامج الخفي لـ IoT Edge. بعد الأمر، أدخل :q للخروج.

    systemctl status iotedge
    

استكشاف الأخطاء وإصلاحها

إذا رأيت أخطاء (نص ملون مسبوق ب "[ERROR]") في الحالة، فافحص سجلات البرنامج الخفي للحصول على معلومات مفصلة عن الخطأ.

journalctl -u iotedge --no-pager --no-full

لمزيد من المعلومات حول معالجة الأخطاء، راجع صفحة استكشاف الأخطاء وإصلاحها .

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

يمثل هذا البرنامج التعليمي جزءًا من مجموعة حيث تعتمد كل مقالة على العمل المنجز في المقالات السابقة. انتظر لتنظيف أي موارد حتى تكمل البرنامج التعليمي النهائي.

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

لقد أكملنا للتو تكوين Azure VM كبوابة شفافة لـ IoT Edge. بدأنا بإنشاء شهادات اختبار قمنا بتحميلها إلى Key Vault. بعد ذلك، استخدمنا برنامجًا نصيًا، وقالب Resource Manager لنشر الجهاز الظاهري مع صورة وقت تشغيل Ubuntu Server 16.04 LTS + Azure IoT Edge من Azure Marketplace. مع تشغيل الجهاز الظاهري، قمنا بالاتصال عبر SSH. ثم قمنا بتسجيل الدخول إلى Azure، وقمنا بتنزيل الشهادات من Key Vault. لقد أجرينا العديد من التحديثات على تكوين وقت تشغيل IoT Edge عن طريق تحديث ملف config.yaml.

تابع إلى المقالة التالية لإنشاء وحدات IoT Edge.