كيفية ترحيل مركز IoT تلقائيا باستخدام Azure CLI

استخدم Azure CLI لترحيل مركز IoT إلى منطقة جديدة أو طبقة جديدة أو تكوين جديد.

الخطوات الواردة في هذه المقالة مفيدة إذا كنت تريد:

  • قم بالترقية من المستوى المجاني إلى مركز IoT أساسي أو قياسي.
  • نقل مركز IoT إلى منطقة جديدة.
  • تصدير معلومات حالة مركز IoT للحصول على نسخة احتياطية.
  • زيادة عدد الأقسام لمركز IoT.
  • قم بإعداد مركز لتطوير، بدلا من بيئة الإنتاج.

مقارنة خطوات الترحيل التلقائية واليدوية

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

  • عملية Azure CLI (هذه المقالة):

    • ترحيل سجل جهازك ومعلومات التوجيه ونقطة النهاية وتفاصيل التكوين الأخرى مثل عمليات توزيع IoT Edge أو تكوينات إدارة الأجهزة التلقائية.
    • أسهل لترحيل أعداد صغيرة من الأجهزة (على سبيل المثال، ما يصل إلى 10000).
    • لا يتطلب حساب تخزين Azure.
    • يجمع سلاسل الاتصال للتوجيه ونقاط نهاية تحميل الملفات ويتضمنها في إخراج قالب ARM.
  • العملية اليدوية:

    • ترحيل سجل جهازك ومعلومات التوجيه ونقطة النهاية. يجب عليك إعادة إنشاء تفاصيل التكوين الأخرى يدويا في مركز IoT الجديد.
    • أسرع لترحيل أعداد كبيرة من الأجهزة (على سبيل المثال، أكثر من 100,000).
    • يستخدم حساب تخزين Azure لنقل سجل الجهاز.
    • ينظف سلاسل الاتصال للتوجيه ونقاط نهاية تحميل الملفات من إخراج قالب ARM، وتحتاج إلى إضافتها مرة أخرى يدويا.

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

  • Azure CLI

    تتطلب الميزات الموضحة في هذه المقالة الإصدار 0.20.0 أو أحدث من ملحق azure-iot . للتحقق من إصدار الملحق الخاص بك، قم بتشغيل az --version. لتحديث الملحق الخاص بك، قم بتشغيل az extension update --name azure-iot.

    إذا كان لا يزال لديك ملحق azure-cli-iot-ext القديم مثبتا، فقم بإزالة هذا الملحق قبل إضافة ملحق azure-iot .

حالة مركز IoT

عندما نتحدث عن ترحيل حالة مركز IoT، فإننا نشير إلى مجموعة من ثلاثة جوانب:

  • موارد Azure Resource Manager (ARM). هذا الجانب هو كل ما يمكن تعريفه في قالب مورد، وهو نفس المعلومات التي ستحصل عليها إذا قمت بتصدير قالب المورد من مركز IoT الخاص بك في مدخل Microsoft Azure. تتضمن المعلومات التي تم التقاطها كجزء من جانب Azure Resource Manager ما يلي:

    • وقت استبقاء مركز الأحداث المضمن
    • الشهادات
    • خصائص من السحابة إلى الجهاز
    • تعطيل SAS للجهاز
    • تعطيل المصادقة المحلية
    • تمكين إعلامات تحميل الملفات
    • نقطة نهاية تخزين تحميل الملفات
    • الهويات
      • الهويات المعينة من قبل المستخدم
      • الهويات المعينة من قبل النظام (ممكنة أو معطلة)
    • مجموعات قواعد الشبكة
    • التوجيه
      • ⁧⁩نقاط النهاية المخصصة⁧⁩
      • مسار احتياطي
      • مسارات
    • علامات
  • التكوينات. هذا الجانب مخصص لجوانب مركز IoT التي لا يتم تمثيلها في قالب ARM. على وجه التحديد، يغطي هذا الجانب تكوينات إدارة الأجهزة التلقائية وعمليات توزيع IoT Edge.

  • الاجهزه. يمثل هذا الجانب المعلومات الموجودة في سجل جهازك، والتي تتضمن:

    • هويات الجهاز والتوائم
    • هويات الوحدة النمطية والتوائم

قد لا يتم تصدير أو استيراد أي خاصية أو تكوين IoT Hub غير مدرج هنا بشكل صحيح.

تصدير حالة مركز IoT

استخدم الأمر az iot hub state export لتصدير حالة مركز IoT إلى ملف JSON.

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

عند تصدير حالة مركز IoT، يمكنك اختيار الجوانب التي يجب تصديرها.

المعلمة التفاصيل
--aspects جوانب الحالة للتصدير. حدد قيمة واحدة أو أكثر من القيم المقبولة: الذراع أو التكوينات أو الأجهزة. إذا تم ترك هذه المعلمة، فسيتم تصدير جميع الجوانب الثلاثة.
--state-file -f المسار إلى الملف حيث تتم كتابة معلومات الحالة.
--replace -r إذا تم تضمين هذه المعلمة، فسيستبدل أمر التصدير محتويات ملف الحالة.
--hub-name -n
أو
--login -l
اسم مركز IoT الأصلي (-n) أو سلسلة الاتصال لمركز IoT الأصل (-l). إذا تم توفير كليهما، فإن سلسلة الاتصال تأخذ الأولوية.
--resource-group -g اسم مجموعة الموارد لمركز IoT الأصلي.

يقوم المثال التالي بتصدير جميع جوانب حالة مركز IoT إلى ملف يسمى myHub-state:

az iot hub state export --hub-name myHub --state-file ./myHub-state.json

يقوم المثال التالي بتصدير الأجهزة وجوانب Azure Resource Manager فقط لحالة مركز IoT، ويستبدل محتوى الملف الموجود:

az iot hub state export --hub-name myHub --state-file ./myHub-state.json --aspects arm devices --replace

تصدير نقاط النهاية

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

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

استيراد حالة مركز IoT

استخدم الأمر az iot hub state import لاستيراد معلومات الحالة من ملف تم تصديره إلى مركز IoT جديد أو موجود.

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

المعلمة التفاصيل
--aspects جوانب الحالة المراد استيرادها. حدد قيمة واحدة أو أكثر من القيم المقبولة: الذراع أو التكوينات أو الأجهزة. إذا تم ترك هذه المعلمة، فسيتم استيراد جميع الجوانب الثلاثة.
--state-file -f المسار إلى ملف الحالة المصدر.
--replace -r إذا تم تضمين هذه المعلمة، فإن أمر الاستيراد يحذف الحالة الحالية لمركز الوجهة.
--hub-name -n
أو
--login -l
اسم مركز IoT الوجهة (-n) أو سلسلة الاتصال لمركز IoT الوجهة (-l). إذا تم توفير كليهما، فإن سلسلة الاتصال تأخذ الأولوية.
--resource-group -g اسم مجموعة الموارد لمركز IoT الوجهة.

يستورد المثال التالي جميع الجوانب إلى مركز IoT جديد، والذي يتم إنشاؤه إذا لم يكن موجودا بالفعل:

az iot hub state import --hub-name myNewHub --state-file ./myHub-state.json

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

az iot hub state import --hub-name myNewHub --state-file ./myHub-state.json --aspects devices configurations --replace

إنشاء مركز IoT جديد مع استيراد الحالة

يمكنك استخدام az iot hub state import الأمر لإنشاء مركز IoT جديد أو للكتابة إلى مركز IoT موجود.

إذا كنت ترغب في إنشاء IoT Hub جديد، فيجب عليك تضمين arm الجانب في أمر الاستيراد. إذا arm لم يكن مضمنا في الأمر، ولم يكن مركز الوجهة موجودا، فسيفشل أمر الاستيراد.

إذا لم يكن مركز الوجهة موجودا، فإن المعلمة --resource-group مطلوبة أيضا لأمر الاستيراد.

تحديث مركز IoT موجود مع استيراد الحالة

إذا كان مركز IoT الوجهة موجودا بالفعل، فلن arm يكون الجانب مطلوبا للأمر az iot hub state import . إذا قمت بتضمين arm الجانب ، فسيتم استبدال جميع خصائص المورد باستثناء الخصائص التالية التي لا يمكن تغييرها بعد إنشاء المركز:

  • ‏‏الموقع
  • SKU
  • عدد أقسام مراكز الأحداث المضمنة
  • موقع البيانات
  • الميزات

--resource-group إذا تم تحديد في أمر الاستيراد وكان مختلفا عن مجموعة الموارد الحالية لمركز IoT، فسيفشل الأمر لأنه يحاول إنشاء مركز جديد بنفس اسم المركز الموجود بالفعل.

إذا قمت بتضمين العلامة --replace في أمر الاستيراد، فستتم إزالة جوانب مركز IoT التالية من مركز الوجهة قبل تحميل حالة المركز:

  • ARM: يتم حذف أي شهادات تم تحميلها على مركز الوجهة. إذا كانت الشهادة موجودة، فإنها تحتاج إلى علامة etag ليتم تحديثها.
  • الأجهزة: يتم حذف جميع الأجهزة والوحدات النمطية، الحافة وغير الحافة.
  • التكوينات: يتم حذف جميع تكوينات ADM وعمليات توزيع IoT Edge.

ترحيل مركز IoT

استخدم الأمر az iot hub state migrate لترحيل حالة مركز IoT واحد إلى مركز IoT جديد أو موجود.

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

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

المعلمة التفاصيل
--aspects جوانب الحالة المراد ترحيلها. حدد قيمة واحدة أو أكثر من القيم المقبولة: الذراع أو التكوينات أو الأجهزة. إذا تم ترك هذه المعلمة، فسيتم ترحيل جميع الجوانب الثلاثة.
--replace -r إذا تم تضمين هذه المعلمة، فإن أمر الترحيل يحذف الحالة الحالية لمركز الوجهة.
--destination-hub --dh
أو
--destination-hub-login --dl
اسم مركز IoT الوجهة (--dh) أو سلسلة الاتصال لمركز IoT الوجهة (--dl). إذا تم توفير كليهما، فإن سلسلة الاتصال تأخذ الأولوية.
--destination-resource-group --dg اسم مجموعة الموارد لمركز IoT الوجهة. مجموعة موارد الوجهة مطلوبة إذا لم يكن مركز الوجهة موجودا.
--origin-hub --oh
أو
--origin-hub-login --ol
اسم مركز IoT الأصلي (--oh) أو سلسلة الاتصال لمركز IoT الأصل (--ol). إذا تم توفير كليهما، فإن سلسلة الاتصال تأخذ الأولوية. استخدم سلسلة الاتصال لتجنب الاضطرار إلى تسجيل الدخول إلى جلسة Azure CLI.
--origin-resource-group --og اسم مجموعة الموارد لمركز IoT الأصلي.

يقوم المثال التالي بترحيل جميع جوانب مركز الأصل إلى مركز الوجهة، والذي يتم إنشاؤه إذا لم يكن موجودا:

az iot hub state migrate --origin-hub myHub --origin-resource-group myGroup  --destination-hub myNewHub --destination-resource-group myNewGroup

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

إذا لم تتمكن من تصدير أو استيراد الأجهزة أو التكوينات، فتحقق من أن لديك حق الوصول إلى هذه الخصائص. إحدى الطرق للتحقق من وصولك هي عن طريق تشغيل az iot hub device-identity list الأوامر أو az iot hub configuration list .

az iot hub state migrate إذا فشل الأمر، فحاول تشغيل أوامر التصدير والاستيراد بشكل منفصل. ينتج عن الأمرين نفس وظيفة أمر الترحيل وحده، ولكن عن طريق تشغيلها بشكل منفصل، يمكنك مراجعة ملفات الحالة التي تم إنشاؤها من أمر التصدير.

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

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