إنشاء وتوفير جهاز IoT Edge على Linux باستخدام مفاتيح متماثلة

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

هام

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

توفر هذه المقالة إرشادات شاملة لتسجيل وتوفير جهاز Linux IoT Edge، بما في ذلك تثبيت IoT Edge.

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

تستعرض الخطوات الواردة في هذه المقالة عملية تسمى التوفير اليدوي، حيث تقوم بتوصيل جهاز واحد بمركز IoT الخاص به. للتزويد اليدوي، لديك خياران لمصادقة أجهزة IoT Edge:

  • مفاتيح متماثلة: عند إنشاء هوية جهاز جديدة في IoT Hub، تنشئ الخدمة مفتاحين. يمكنك وضع أحد المفاتيح على الجهاز، ويعرض المفتاح إلى IoT Hub عند المصادقة.

    أسلوب المصادقة هذا أسرع للبدء، ولكن ليس آمنا.

  • X.509 موقع ذاتيا: يمكنك إنشاء شهادتي هوية X.509 ووضعهما على الجهاز. عند إنشاء هوية جهاز جديدة في IoT Hub، فإنك توفر بصمة الإبهام من كلتا الشهادتين. عندما يصادق الجهاز على IoT Hub، فإنه يقدم شهادة واحدة ويتحقق IoT Hub من أن الشهادة تطابق بصمة الإبهام الخاصة به.

    أسلوب المصادقة هذا أكثر أمانا ويوصى به لسيناريوهات الإنتاج.

تتناول هذه المقالة استخدام مفاتيح متماثلة كطريقة مصادقة. إذا كنت ترغب في استخدام شهادات X.509، فشاهد إنشاء وتوفير جهاز IoT Edge على Linux باستخدام شهادات X.509.

إشعار

إذا كان لديك العديد من الأجهزة لإعدادها ولا تريد توفير كل منها يدويا، فاستخدم إحدى المقالات التالية لمعرفة كيفية عمل IoT Edge مع خدمة توفير جهاز IoT Hub:

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

تتناول هذه المقالة تسجيل جهاز IoT Edge وتثبيت IoT Edge عليه. هذه المهام لها متطلبات أساسية وأدوات مساعدة مختلفة تستخدم لإنجازها. تأكد من أن لديك جميع المتطلبات الأساسية التي تمت تغطيتها قبل المتابعة.

أدوات إدارة الأجهزة

يمكنك استخدام مدخل Microsoft Azure أو Visual Studio Code أو Azure CLI لخطوات تسجيل جهازك. كل أداة مساعدة لها متطلباتها الأساسية الخاصة:

مركز IoT مجاني أو قياسي في اشتراك Azure الخاص بك.

متطلبات الجهاز

جهاز X64 أو ARM32 أو ARM64 Linux.

تنشر Microsoft حزم التثبيت لمجموعة متنوعة من أنظمة التشغيل.

للحصول على أحدث المعلومات حول أنظمة التشغيل المدعومة حاليا لسيناريوهات الإنتاج، راجع أنظمة Azure IoT Edge المدعومة.

تسجيل جهازك

يمكنك استخدام مدخل Microsoft Azure أو Visual Studio Code أو Azure CLI لتسجيل جهازك، اعتمادا على تفضيلك.

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

  1. سجل الدخول إلى مدخل Microsoft Azure والانتقال إلى IoT hub الخاص بك.

  2. في الجزء الأيمن، حدد الأجهزة من القائمة، ثم حدد إضافة جهاز.

  3. في صفحة إنشاء جهاز ، قم بتوفير المعلومات التالية:

    • إنشاء معرف جهاز وصفي. دون ملاحظة حول معرف الجهاز هذا، حيث ستستخدمه لاحقا.
    • حدد خانة الاختيار جهاز IoT Edge .
    • اختر مفتاح المحتوي كنوع المصادقة.
    • استخدم الإعدادات الافتراضية لإنشاء مفاتيح المصادقة تلقائيا وتوصيل الجهاز الجديد بمركزك.
  4. حدد حفظ.

الآن بعد أن أصبح لديك جهاز مسجل في IoT Hub، استرد المعلومات التي تستخدمها لإكمال تثبيت وقت تشغيل IoT Edge وتوفيره.

عرض الأجهزة المسجلة واسترداد معلومات التوفير

تحتاج الأجهزة التي تستخدم مصادقة المفتاح المتماثل إلى سلسلة الاتصال الخاصة بها لإكمال تثبيت وقت تشغيل IoT Edge وتوفيره.

يتم سرد الأجهزة الممكنة للحافة التي تتصل بمركز IoT في صفحة الأجهزة . يمكنك تصفية القائمة حسب نوع Iot Edge Device.

لقطة شاشة لكيفية عرض أجهزتك في مدخل Microsoft Azure، IoT Hub.

عندما تكون مستعدا لإعداد جهازك، فأنت بحاجة إلى سلسلة الاتصال الذي يربط جهازك الفعلي بهويته في مركز IoT.

تحتوي الأجهزة التي تصادق باستخدام مفاتيح متماثلة على سلسلة الاتصال الخاصة بها متاحة للنسخ في المدخل.

  1. من صفحة الأجهزة في المدخل، حدد معرف جهاز IoT Edge من القائمة.
  2. انسخ قيمة سلسلة الاتصال الأساسية أو سلسلة الاتصال الثانوية.

تثبيت IoT Edge

في هذا القسم، يمكنك إعداد جهاز Linux الظاهري أو الجهاز الفعلي ل IoT Edge. بعد ذلك، يمكنك تثبيت IoT Edge.

قم بتشغيل الأوامر التالية لإضافة مستودع الحزمة ثم إضافة مفتاح توقيع حزمة Microsoft إلى قائمة المفاتيح الموثوق بها.

هام

في 30 يونيو 2022 تم إيقاف Raspberry Pi OS Stretch من قائمة دعم نظام التشغيل من المستوى 1. لتجنب الثغرات الأمنية المحتملة، قم بتحديث نظام التشغيل المضيف إلى Bullseye.

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

  • 20.04:

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 18.04:

    wget https://packages.microsoft.com/config/ubuntu/18.04/multiarch/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

إشعار

تخضع حزم برامج Azure IoT Edge لشروط الترخيص الموجودة في كل حزمة LICENSE (usr/share/doc/{package-name}أو الدليل). اقرأ شروط الترخيص قبل استخدام الحزمة. تركيب واستخدامك للحزمة يشكل قبولك لهذه الشروط. في حال عدم موافقتك على شروط الترخيص، فلا تستخدم هذه الحزمة.

ثبِّت محرك حاوية

تعتمد Azure IoT Edge على وقت تشغيل حاوية متوافق مع OCI. بالنسبة لسيناريوهات الإنتاج، نوصي باستخدام محرك Moby. محرك Moby هو محرك الحاوية الوحيد المدعوم رسميا مع IoT Edge. تتوافق صور حاوية Docker CE/EE مع وقت تشغيل Moby.

ثبِّت محرك Moby.

sudo apt-get update; \
  sudo apt-get install moby-engine

بمجرد تثبيت محرك Moby بنجاح، قم بتكوينه لاستخدام local برنامج تشغيل التسجيل كآلية تسجيل. لمعرفة المزيد حول تكوين التسجيل، راجع قائمة التحقق من نشر الإنتاج.

  • قم بإنشاء أو فتح ملف تكوين Docker daemon في /etc/docker/daemon.json.

  • قم بتعيين برنامج تشغيل التسجيل الافتراضي إلى local برنامج تشغيل التسجيل كما هو موضح في المثال أدناه.

       {
          "log-driver": "local"
       }
    
  • أعد تشغيل محرك الحاوية حتى تسري التغييرات.

    sudo systemctl restart docker
    

    تلميح

    إذا تلقيت أخطاء عند تثبيت محرك حاوية Moby، فتحقق من توافق Linux kernel ل Moby. تشحن بعض الشركات المُصنّعة للأجهزة المضمنة صور الأجهزة التي تحتوي على أنوية Linux مخصصة دون الميزات المطلوبة لتوافق محرك الحاوية. شغَّل الأمر التالي، والذي يستخدم البرنامج النصي check-config الذي يزوده Moby، للتحقق من تكوين kernel خاصتك:

    curl -ssl https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh
    chmod +x check-config.sh
    ./check-config.sh
    

    في إخراج البرنامج النصي، تحقق من أن جميع العناصر الموجودة تحت Generally Necessary و Network Drivers ممكنة. إذا كنت تفتقد إلى الميزات، فقم بتمكينها عن طريق إعادة إنشاء نواة من المصدر وتحديد الوحدات النمطية المقترنة لتضمينها في kernel .config المناسب. وبالمثل، إذا كنت تستخدم منشئ تكوين kernel مثل defconfig أو menuconfig، فابحث عن الميزات المعنية وقم بتمكينها وأعد بناء النواة وفقا لذلك. بعد نشر نواة المعدلة حديثا، قم بتشغيل البرنامج النصي check-config مرة أخرى للتحقق من تمكين جميع الميزات المطلوبة بنجاح.

قم بتثبيت وقت تشغيل IoT Edge

يقدم برنامج الأمان الخفي IoT Edge معايير الأمان على جهاز IoT Edge ويحافظ عليها. يبدأ البرنامج الخفي في كل عملية تمهيد ويمهد الجهاز عن طريق بدء بقية وقت تشغيل IoT Edge.

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

تثبيت إصدار IoT Edge 1.1.* مع حزمة libiothsm-std :

sudo apt-get update; \
  sudo apt-get install iotedge

إشعار

IoT Edge الإصدار 1.1 هو فرع الدعم طويل الأجل من IoT Edge. إذا كنت تقوم بتشغيل إصدار أقدم، نوصي بالتثبيت أو التحديث إلى أحدث تصحيح لأن الإصدارات القديمة لم تعد مدعومة.

تزويد الجهاز بهويته السحابية

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

على جهاز IoT Edge، افتح ملف التكوين.

sudo nano /etc/iotedge/config.yaml

ابحث عن تكوينات التزويد للملف والغِ تعليق القسم تكوين التزويد اليدوي باستخدام سلسلة اتصال إذا لم يكن التعليق عليه ملغي مسبقًا.

# Manual provisioning configuration using a connection string
provisioning:
source: "manual"
device_connection_string: "ADD_DEVICE_CONNECTION_STRING_HERE"

حدِّث القيمة device_connection_string مع سلسلة الاتصال من جهاز IoT Edge خاصتك. تأكد من التعليق على أي أقسام توفير أخرى. تأكد من أن التزويد: السطر ليس له مسافة بيضاء مسبوقة وأن العناصر المتداخلة يتم مسافة بادئة بمسافة اثنين.

للصق محتويات الحافظة في Nano Shift+Right Click أو اضغط Shift+Insertعلى .

احفظ الملف وأغلقه.

CTRL + X، ، YEnter

بعد إدخال معلومات التزويد في ملف التكوين، أعِد تشغيل البرنامج الخفي:

sudo systemctl restart iotedge

تحقق من التكوين الناجح

تحقق من أن وقت التشغيل قد جرى تثبيته وتكوينه بنجاح على جهاز IoT Edge خاصتك.

تلميح

أنت بحاجة إلى امتيازات مرتفعة لتشغيل الأوامر iotedge. بمجرد تسجيل الخروج من جهازك وإعادة تسجيل الدخول في المرة الأولى بعد تثبيت وقت تشغيل IoT Edge، يتم تحديث أذوناتك تلقائيًّا. حتى ذلك الحين، استخدم sudo أمام الأوامر.

تحقق من تشغيل خدمة نظام IoT Edge.

sudo systemctl status iotedge

إذا كنت بحاجة إلى استكشاف أخطاء الخدمة وإصلاحها، فقم باسترداد سجلات الخدمة.

journalctl -u iotedge

check استخدم الأداة للتحقق من التكوين وحالة الاتصال للجهاز.

sudo iotedge check

تلميح

استخدم sudo دائما لتشغيل أداة الفحص، حتى بعد تحديث أذوناتك. تحتاج الأداة إلى امتيازات مرتفعة للوصول إلى ملف التكوين للتحقق من حالة التكوين.

إشعار

على جهاز تم توفيره حديثا، قد ترى خطأ يتعلق ب IoT Edge Hub:

× جاهزية الإنتاج: يستمر دليل تخزين Edge Hub على نظام ملفات المضيف - خطأ

تعذر التحقق من الحالة الحالية لحاوية edgeHub

هذا الخطأ متوقع على جهاز تم توفيره حديثا لأن الوحدة النمطية IoT Edge Hub لا تعمل. لحل الخطأ، في IoT Hub، قم بتعيين الوحدات النمطية للجهاز وإنشاء نشر. يؤدي إنشاء نشر للجهاز إلى بدء تشغيل الوحدات النمطية على الجهاز بما في ذلك وحدة IoT Edge Hub.

عرض جميع الوحدات النمطية التي تعمل على جهاز IoT Edge. عند بدء تشغيل الخدمة للمرة الأولى، يجب أن تشاهد الوحدة النمطية edgeAgent قيد التشغيل فقط. تعمل الوحدة النمطية edgeAgent بشكل افتراضي وتساعد على تثبيت أي وحدات إضافية تقوم بنشرها على جهازك وتشغيلها.

sudo iotedge list

عند إنشائك جهاز IoT Edge جديدًا، فإنه سيعرض رمز الحالة 417 -- The device's deployment configuration is not set في مدخل Microsoft Azure. هذه الحالة طبيعية، وتعني أن الجهاز جاهز لتلقي وحدة نشر.

تثبيت إصدار محدد أو غير متصل (اختياري)

الخطوات الواردة في هذا القسم مخصصة للسيناريوهات التي لا تغطيها خطوات التثبيت القياسية. وقد يشمل ذلك ما يلي:

  • تثبيت IoT Edge أثناء عدم الاتصال
  • تثبيت إصدار مرشح للإصدار

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

باستخدام أوامر curl، يمكنك استهداف ملفات المكونات مباشرة من مستودع IoT Edge GitHub.

  1. انتقل إلى إصدارات Azure IoT Edge، وابحث عن إصدار الإصدار الذي تريد استهدافه.

  2. قم بتوسيع قسم Assets لهذا الإصدار.

  3. يجب أن يحتوي كل إصدار على ملفات جديدة لبرنامج أمان IoT Edge الخفي وhsmlib. إذا كنت تريد تثبيت IoT Edge على جهاز غير متصل، فقم بتنزيل هذه الملفات مسبقا. وإلا، استخدم الأوامر التالية لتحديث هذه المكونات.

    1. ابحث عن ملف libiothsm-std الذي يطابق بنية جهاز IoT Edge. انقر بزر الماوس الأيمن فوق ارتباط الملف وانسخ عنوان الارتباط.

    2. استخدم الارتباط المنسخ في الأمر التالي لتثبيت هذا الإصدار من hsmlib:

      curl -L <libiothsm-std_link> -o libiothsm-std.deb && sudo apt-get install ./libiothsm-std.deb
      
    3. ابحث عن ملف iotedge الذي يتطابق مع بنية جهاز IoT Edge. انقر بزر الماوس الأيمن فوق ارتباط الملف وانسخ عنوان الارتباط.

    4. استخدم الارتباط المنسخ في الأمر التالي لتثبيت هذا الإصدار من برنامج أمان IoT Edge.

      curl -L iotedge_link_here -o iotedge.deb && sudo apt-get install ./iotedge.deb
      

الآن بعد أن تم تثبيت محرك الحاوية ووقت تشغيل IoT Edge على جهازك، فأنت جاهز للخطوة التالية، وهي تزويد الجهاز بهويته السحابية.

إلغاء تثبيت IoT Edge

إذا كنت تريد إزالة تثبيت IoT Edge من جهازك، فاستخدم الأوامر التالية.

قم بإزالة وقت تشغيل IoT Edge.

sudo apt-get autoremove iotedge

عند إزالة وقت تشغيل IoT Edge، يتم إيقاف أي حاويات أنشأها ولكنها لا تزال موجودة على جهازك. عرض جميع الحاويات لمعرفة الحاويات المتبقية.

sudo docker ps -a

احذف الحاويات من جهازك، بما في ذلك حاويتي وقت التشغيل.

sudo docker rm -f <container name>

وأخيرا، قم بإزالة وقت تشغيل الحاوية من جهازك.

sudo apt-get autoremove --purge moby-engine