مشاركة عبر


دعم cloud-init للأجهزة الظاهرية في Azure

ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ مجموعات مقياس مرنة

توضح هذه المقالة الدعم الموجود ل cloud-init لتكوين جهاز ظاهري (VM) أو مجموعات مقياس الجهاز الظاهري في وقت التوفير في Azure. يتم تشغيل تكوينات cloud-init هذه عند التمهيد الأول بمجرد توفير الموارد بواسطة Azure.

توفير الجهاز الظاهري هو العملية التي يمرر فيها Azure قيم معلمات إنشاء الجهاز الظاهري، مثل اسم المضيف واسم المستخدم وكلمة المرور، وإتاحتها للجهاز الظاهري أثناء تشغيله. سيستهلك "عامل التوفير" هذه القيم، ويقوم بتكوين الجهاز الظاهري، والإبلاغ عند اكتماله.

يدعم Azure اثنين من وكلاء التوفير cloud-init، وعامل Azure Linux (WALA).

نظرة عامة على cloud-init

cloud-init هو نهج مستخدم على نطاق واسع لتخصيص جهاز Linux الظاهري أثناء تشغيله لأول مرة. يمكنك استخدام cloud-init لتثبيت الحزم وكتابة الملفات، أو لتكوين المستخدمين والأمان. نظرا لأنه يتم استدعاء cloud-init أثناء عملية التمهيد الأولية، فلا توجد خطوات إضافية أو وكلاء مطلوبين لتطبيق التكوين الخاص بك. لمزيد من المعلومات حول كيفية تنسيق #cloud-config الملفات أو المدخلات الأخرى بشكل صحيح، راجع موقع وثائق cloud-init. #cloud-config الملفات هي ملفات نصية مشفرة في base64.

يعمل cloud-init أيضا عبر التوزيعات. على سبيل المثال ، لا تستخدم apt-get install أو yum install لتثبيت حزمة. بدلا من ذلك ، يمكنك تحديد قائمة الحزم المراد تثبيتها. يستخدم cloud-init تلقائيا أداة إدارة الحزم الأصلية للتوزيعة التي تحددها.

نحن نعمل بنشاط مع شركائنا في توزيعة Linux المعتمدين من أجل توفير صور ممكنة للسحابة في Azure Marketplace. ستجعل هذه الصور عمليات النشر والتكوينات في السحابة تعمل بسلاسة مع الأجهزة الظاهرية ومجموعات مقياس الجهاز الظاهري. في البداية نتعاون مع شركاء توزيعة Linux المعتمدين والمنبع لضمان وظائف cloud-init مع نظام التشغيل على Azure، ثم يتم تحديث الحزم وإتاحتها للجمهور في مستودعات حزم التوزيعة.

هناك مرحلتان لجعل cloud-init متاحا لتوزيعات Linux المدعومة على Azure، ودعم الحزمة، ثم دعم الصور:

  • مستندات "دعم حزمة cloud-init على Azure"، وهي حزم cloud-init وما بعده أو قيد المعاينة، بحيث يمكنك استخدام هذه الحزم مع نظام التشغيل في صورة مخصصة.
  • مستندات "الصورة الجاهزة للانتشار السحابي" إذا كانت الصورة قد تم تكوينها بالفعل لاستخدام cloud-init.

قانوني

الناشر / الإصدار عرض وحدة حفظ المخزون SKU الإصدار جاهز للصورة في السحابة دعم حزمة cloud-init على Azure
كنسي 24.04 UbuntuServer 24.04-LTS أخير نعم نعم
كنسي 22.04 UbuntuServer 22.04-LTS أخير نعم نعم
كنسي 20.04 UbuntuServer 20.04-LTS أخير نعم نعم

RHEL

الناشر / الإصدار عرض وحدة حفظ المخزون SKU الإصدار جاهز للصورة في السحابة دعم حزمة cloud-init على Azure
ريدهات 7 RHEL 7.7, 7.8, 7_9 أخير نعم نعم
ريدهات 8 RHEL 8.1, 8.2, 8_3, 8_4 أخير نعم نعم
ريدهات 9 RHEL 9_0, 9_1 أخير نعم نعم
  • يتم توفير جميع وحدات RedHat SKU الأخرى بدءا من RHEL 7 (الإصدار 7.7) و RHEL 8 (الإصدار 8.1) بما في ذلك صور Gen1 و Gen2 باستخدام cloud-init. لا يتم دعم Cloud-init على RHEL 6.

Oracle

الناشر / الإصدار عرض وحدة حفظ المخزون SKU الإصدار جاهز للصورة في السحابة دعم حزمة cloud-init على Azure
أوراكل 7 أوراكل لينكس 77 ، 78 ، ol79 أخير نعم نعم
أوراكل 8 أوراكل لينكس 81, OL82, OL83-LVM, OL84-LVM أخير نعم نعم
  • يتم توفير جميع وحدات Oracle SKU الأخرى بدءا من Oracle 7 (الإصدار 7.7) و Oracle 8 (الإصدار 8.1) بما في ذلك صور Gen1 و Gen2 باستخدام cloud-init.

SUSE SLES

الناشر / الإصدار عرض وحدة حفظ المخزون SKU الإصدار جاهز للصورة في السحابة دعم حزمة cloud-init على Azure
سوس 15 SLES (خادم SUSE Linux Enterprise) جميع SPs أخير نعم نعم
سوس 12 SLES (خادم SUSE Linux Enterprise) SP5 أخير نعم نعم
  • SUSE Linux Enterprise Server 12 هو موسوعة الحياة منذ 31 أكتوبر 2024 ، كان SP5 آخر SP

Debian

الناشر / الإصدار عرض وحدة حفظ المخزون SKU الإصدار جاهز للصورة في السحابة دعم حزمة cloud-init على Azure
دبيان-10 Debian 10-cloudinit-gen2 دبيان: debian-10:10-cloudinit-gen2:0.0.1015 نعم نعم
دبيان-10 Debian 10-cloudinit-gen2 دبيان:debian-10:10-cloudinit-gen2:0.0.991 نعم نعم
دبيان-10 Debian 10-cloudinit-gen2 دبيان:debian-10:10-cloudinit-gen2:0.0.999 نعم نعم

حاليا، يدعم Azure Stack توفير الصور الممكنة في السحابة.

ما هو الفرق بين cloud-init وعامل Linux (WALA)؟

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

نحن نعمل على تحسين مهمة تكوين الأجهزة الظاهرية لاستخدام cloud-init بدلا من عامل Linux للسماح لعملاء cloud-init الحاليين باستخدام البرامج النصية الحالية لسحب الشبكة، أو العملاء الجدد للاستفادة من وظيفة تكوين cloud-init الغنية. إذا كانت لديك استثمارات حالية في البرامج النصية cloud-init لتكوين أنظمة Linux، فلا توجد إعدادات إضافية مطلوبة لتمكين معالجة cloud-init لها.

لا يمكن ل cloud-init معالجة ملحقات Azure، لذلك لا يزال WALA مطلوبا في الصورة لمعالجة الملحقات ولكنه يحتاج إلى تعطيل التعليمات البرمجية للتوفير الخاصة به. بالنسبة لصور توزيعات Linux المعتمدة التي يتم تحويلها إلى توفير بواسطة cloud-init، تم تثبيت WALA وإعدادها بشكل صحيح.

عند إنشاء جهاز ظاهري، إذا لم تقم بتضمين محول Azure CLI --custom-data في وقت التوفير، فإن cloud-init أو WALA يأخذ الحد الأدنى من معلمات توفير الجهاز الظاهري المطلوبة لتوفير الجهاز الظاهري وإكمال التوزيع مع الإعدادات الافتراضية. إذا قمت بالإشارة إلى تكوين cloud-init باستخدام المحول --custom-data ، فسيكون كل ما هو موجود في بياناتك المخصصة متاحا ل cloud-init عند تمهيد الجهاز الظاهري.

لا تحتوي تكوينات cloud-init المطبقة على الأجهزة الظاهرية على قيود زمنية ولن تتسبب في فشل التوزيع من خلال انتهاء المهلة. هذا ليس صحيحا بالنسبة ل WALA، إذا قمت بتغيير الإعدادات الافتراضية ل WALA لمعالجة البيانات المخصصة، فلا يمكن أن يتجاوز إجمالي وقت توفير الجهاز الظاهري البالغ 40 دقيقة، إذا كان الأمر كذلك، فسيفشل إنشاء الجهاز الظاهري.

توفير الجهاز الظاهري cloud-init بدون برنامج تشغيل UDF

بدءا من cloud-init 21.2، يمكنك استخدام cloud-init لتوفير جهاز ظاهري في Azure بدون برنامج تشغيل UDF. إذا لم يكن برنامج تشغيل UDF متوفرا في الصورة، فإن cloud-init يستخدم بيانات التعريف المتوفرة في خدمة بيانات تعريف مثيل Azure لتوفير الجهاز الظاهري. يعمل هذا الخيار فقط مع مفتاح SSH وبيانات المستخدم. لتمرير كلمة مرور أو بيانات مخصصة إلى جهاز ظاهري أثناء التوفير، يجب عليك استخدام برنامج تشغيل UDF.

نشر جهاز ظاهري ممكن في السحابة

يعد نشر جهاز ظاهري ممكن في cloud-init أمرا بسيطا مثل الإشارة إلى توزيع ممكن في cloud-init أثناء النشر. يتعين على مشرفي توزيع Linux اختيار تمكين cloud-init ودمجها في صورهم الأساسية المنشورة في Azure. بمجرد التأكد من تمكين الصورة التي تريد نشرها في السحابة، يمكنك استخدام Azure CLI لنشر الصورة.

تتمثل الخطوة الأولى في نشر هذه الصورة في إنشاء مجموعة موارد باستخدام الأمر az group create . مجموعة موارد Azure هي حاوية منطقية يتم بها نشر موارد Azure وإدارتها.

ينشئ المثال التالي مجموعة موارد باسم myResourceGroup في موقع eastus .

az group create --name myResourceGroup --location eastus

الخطوة التالية هي إنشاء ملف في الغلاف الحالي ، المسمى cloud-init.txt ولصق التكوين التالي. على سبيل المثال، قم بإنشاء الملف في Cloud Shell وليس على جهازك المحلي. يمكنك استخدام أي محرر من اختيارك. أدخل cloud-init.txt المحرر المعقول لإنشاء الملف والاطلاع على قائمة بالمحررين المتاحين. استخدم المحرر الذي تختاره. بعض الخيارات النموذجية هي nano أو vim أو ed. تأكد من نسخ ملف cloud-init بالكامل بشكل صحيح ، خاصة السطر الأول:

SLES Ubuntu RHEL
# cloud-config
package_upgrade: true
packages:
- apache2
# cloud-config
package_upgrade: true
packages:
- httpd
# cloud-config
package_upgrade: true
packages:
- httpd

‏‫ملاحظة

يحتوي cloud-init على أنواع إدخال متعددة ، وسيستخدم cloud-init السطر الأول من customData / userData للإشارة إلى كيفية معالجة الإدخال ، على سبيل المثال #cloud-config يشير إلى أنه يجب معالجة المحتوى كتكوين cloud-init.

اخرج من الملف واحفظ الملف وفقا للمحرر. تحقق من اسم الملف عند الخروج.

الخطوة الأخيرة هي إنشاء جهاز ظاهري باستخدام الأمر az vm create .

ينشئ المثال التالي جهازا ظاهريا مسمى ubuntu2204 وينشئ مفاتيح SSH إذا لم تكن موجودة بالفعل في موقع مفتاح افتراضي. لاستخدام مجموعة معينة من المفاتيح، استخدم الخيار --ssh-key-value . استخدم المعلمة --custom-data لتمرير ملف تكوين cloud-init. قم بتوفير المسار الكامل لتكوين cloud-init.txt إذا قمت بحفظ الملف خارج دليل العمل الحالي.

az vm create \
  --resource-group myResourceGroup \
  --name ubuntu2204 \
  --image Canonical:UbuntuServer:22_04-lts:latest \
  --custom-data cloud-init.txt \
  --generate-ssh-keys 

عند إنشاء الجهاز الظاهري، يعرض Azure CLI معلومات خاصة بالتوزيع الخاص بك. لاحظ publicIpAddressملف . يتم استخدام هذا العنوان للوصول إلى الجهاز الظاهري. يستغرق إنشاء الجهاز الظاهري وتثبيت الحزم وبدء تشغيل التطبيق بعض الوقت. هناك مهام في الخلفية تستمر في العمل بعد أن يعيدك Azure CLI إلى المطالبة. يمكنك SSH في الجهاز الظاهري واستخدام الخطوات الموضحة في قسم استكشاف الأخطاء وإصلاحها لعرض سجلات cloud-init.

يمكنك أيضا نشر جهاز ظاهري ممكن في السحابة عن طريق تمرير المعلمات في قالب ARM.

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

بمجرد توفير الجهاز الظاهري، يتم تشغيل cloud-init من خلال جميع الوحدات النمطية والبرنامج النصي المحدد --custom-data لتكوين الجهاز الظاهري. إذا كنت بحاجة إلى استكشاف أي أخطاء أو سهو من التكوين وإصلاحها، فأنت بحاجة إلى البحث عن اسم الوحدة النمطية (disk_setup أو runcmd على سبيل المثال) في سجل cloud-init - الموجود في /var/log/cloud-init.log.

‏‫ملاحظة

لا يؤدي كل فشل في الوحدة النمطية إلى فشل فادح في التكوين الكلي للسحب الداخلي. على سبيل المثال، باستخدام runcmd الوحدة النمطية، إذا فشل البرنامج النصي، سيستمر cloud-init في الإبلاغ عن نجاح التوفير بسبب تنفيذ الوحدة النمطية runcmd.

لمزيد من المعلومات حول تسجيل cloud-init، راجع وثائق cloud-init

القياس عن بعد

يقوم cloud-init بجمع بيانات الاستخدام وإرسالها إلى Microsoft للمساعدة في تحسين منتجاتنا وخدماتنا. يتم جمع بيانات تتبع الاستخدام فقط أثناء عملية التوفير (التمهيد الأول للجهاز الظاهري). تساعدنا البيانات التي تم جمعها في التحقيق في حالات فشل التوفير ومراقبة الأداء والموثوقية. لا تتضمن البيانات التي يتم جمعها أي معرفات (معرفات شخصية). اقرأ بيان الخصوصية الخاص بنا لمعرفة المزيد. بعض الأمثلة على بيانات تتبع الاستخدام التي يتم جمعها هي (هذه ليست قائمة شاملة): المعلومات المتعلقة بنظام التشغيل (إصدار cloud-init وإصدار التوزيعة وإصدار kernel) ومقاييس الأداء لإجراءات توفير الجهاز الظاهري الأساسية (الوقت اللازم للحصول على عقد إيجار DHCP ووقت استرداد بيانات التعريف اللازمة لتكوين الجهاز الظاهري وما إلى ذلك) وسجل cloud-init وسجل dmesg.

يتم تمكين مجموعة بيانات تتبع الاستخدام حاليا لمعظم صور السوق التي تستخدم cloud-init. يتم تمكينه عن طريق تحديد مراسل القياس عن بعد KVP ل cloud-init. في معظم صور Azure Marketplace، يمكن العثور على هذا التكوين في الملف /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg. تؤدي إزالة هذا الملف أثناء إعداد الصورة إلى تعطيل جمع بيانات تتبع الاستخدام لأي جهاز ظاهري تم إنشاؤه من هذه الصورة.

عينة محتوى 10-azure-kvp.cfg

reporting:
  logging:
    type: log
  telemetry:
    type: hyperv

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

استكشاف مشكلات cloud-init وإصلاحها.

للحصول على أمثلة cloud-init لتغييرات التكوين، راجع المستندات التالية: