⁧⁩دعم تهيئة السحابة للأجهزة الظاهرية في Azure⁧⁩

تنبيه

تشير هذه المقالة إلى CentOS، وهو توزيع Linux يقترب من حالة نهاية العمر الافتراضي (EOL). يرجى مراعاة استخدامك والتخطيط وفقا لذلك. لمزيد من المعلومات، راجع إرشادات نهاية العمر الافتراضي CentOS.

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

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

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

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

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

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

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

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

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

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

Canonical

الموزع / الإصدار العرض وحدة حفظ المخزون SKU إصدار صورة cloud-init جاهزة دعم حزمة cloud-init على Azure
Canonical 22.04 UbuntuServer 22.04-LTS الأحدث yes yes
Canonical 20.04 UbuntuServer 20.04-LTS الأحدث yes yes
Canonical 18.04 UbuntuServer 18.04-LTS الأحدث yes yes

RHEL

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

CentOS

الموزع / الإصدار العرض وحدة حفظ المخزون SKU إصدار صورة cloud-init جاهزة دعم حزمة cloud-init على Azure
OpenLogic 7 CentOS 7.7، و7.8، و7.9 الأحدث yes yes
OpenLogic 8 CentOS 8.1، و8.2، و8.3 الأحدث yes yes
  • يتم توفير جميع وحدات CentOS SKUs الأخرى بدءاً من CentOS 7 (الإصدار 7.7) وCentOS 8 (الإصدار 8.1) بما في ذلك صور Gen1 وGen2 باستخدام تقنية cloud-init. لا تدعم CentOS 6.10 و7.4 و7.5 و7.6 صور cloud-init.

إشعار

OpenLogic هو الآن برنامج Rogue Wave

Oracle

الموزع / الإصدار العرض وحدة حفظ المخزون SKU إصدار صورة cloud-init جاهزة دعم حزمة cloud-init على Azure
Oracle 7 Oracle Linux 77، و78، وol79 الأحدث yes yes
Oracle 8 Oracle Linux 81، وol82، وol83-lvm، وol84-lvm الأحدث yes yes
  • يتم توفير جميع وحدات Oracle SKUs الأخرى بدءاً من Oracle 7 (الإصدار 7.7) وOracle 8 (الإصدار 8.1) بما في ذلك صور Gen1 وGen2 باستخدام cloud-init.

SUSE SLES

الموزع / الإصدار العرض وحدة حفظ المخزون SKU إصدار صورة cloud-init جاهزة دعم حزمة cloud-init على Azure
SUSE 15 SLES (SUSE Linux Enterprise Server) sp1، وsp2، وsp3 الأحدث yes yes
SUSE 12 SLES (SUSE Linux Enterprise Server) sp5 الأحدث yes yes
  • يتم توفير جميع وحدات SUSE SKUs الأخرى بدءاً من SLES 15 (sp1) وSLES 12 (sp5) بما في ذلك صور Gen1 وGen2 باستخدام cloud-init.
  • بالإضافة إلى ذلك، يتم تزويد هذه الصور أيضاً بـ cloud-init -
الموزع / الإصدار العرض وحدة SKU / الإصدار
SUSE 12 SLES (SUSE Linux Enterprise Server) sles-{byos/sap/sap-byos}:12-sp4:2020.06.10
SUSE 12 SLES (SUSE Linux Enterprise Server) sles-{byos/sap/sap-byos}:12-sp3:2020.06.10
SUSE 12 SLES (SUSE Linux Enterprise Server) sles-{byos/sap/sap-byos}:12-sp2:2020.06.10
SUSE 15 SLES (SUSE Linux Enterprise Server) manager-proxy-4-byosgen1:2020.06.10
SUSE 15 SLES (SUSE Linux Enterprise Server) manager-server-4-byos:gen1:2020.06.10

Debian

الموزع / الإصدار العرض وحدة حفظ المخزون SKU إصدار صورة cloud-init جاهزة دعم حزمة cloud-init على Azure
debian (Gen1) debian-10 10-cloudinit 10:0.20201013.422 yes نعم - دعم من إصدار الحزمة: 20.2-2~deb10u1
debian (Gen2) debian-10 10-cloudinit-gen2 0.20201013.422 yes نعم - دعم من إصدار الحزمة: 20.2-2~deb10u1

يدعم Azure Stack حالياً توفير الصور الممكّنة من cloud-init.

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

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

نحن نعزز مهمة تكوين الأجهزة الظاهرية لاستخدام cloud-init بدلا من Linux Agent من أجل السماح لعملاء cloud-init الحاليين باستخدام البرامج النصية الحالية ل 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 عند قيام الجهاز الظاهري بالتمهيد.

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

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

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

نشر جهاز ظاهري تم تمكينه بواسطة cloud-init

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

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

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

az group create --name myResourceGroup --location eastus

تتمثل الخطوة التالية في إنشاء ملف في shell الحالي، باسم cloud-init.txt ولصق التكوين التالي. على سبيل المثال، إنشاء الملف في Cloud Shell وليس على جهازك المحلي. يمكنك استخدام أي محرر من اختيارك. أدخِل sensible-editor cloud-init.txt لإنشاء الملف وراجع قائمة بالمحررين المتاحين. في هذا المثال، نستخدم محرر nano . اختر #1 لاستخدام المحرر nano. تأكد من نسخ ملف 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.

اضغط على Ctrl + X للخروج من الملف، واكتب y لحفظ الملف، ثم اضغط على Enter لتأكيد اسم الملف عند الخروج.

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

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

az vm create \
  --resource-group myResourceGroup \
  --name centos74 \
  --image OpenLogic:CentOS-CI:7-CI:latest \
  --custom-data cloud-init.txt \
  --generate-ssh-keys 

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

يمكنك أيضاً نشر جهاز ظاهري ممكن من قبل cloud-init عن طريق تمرير المعلمات في قالب ARM.

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

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

إشعار

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

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

القياس عن بعد

تقوم cloud-init بتجميع بيانات الاستخدام وإرسالها إلى Microsoft للمساعدة في تحسين منتجاتنا وخدماتنا. يتم جمع بيانات تتبع الاستخدام فقط أثناء عملية التزويد (التمهيد الأول للجهاز الظاهري). تساعدنا البيانات التي تم جمعها على التحقيق في حالات فشل التوفير ومراقبة الأداء والموثوقية. لا تتضمن البيانات التي تم جمعها أي معرفات (معرفات شخصية). اقرأ بيان الخصوصية الخاص بنا لمعرفة المزيد. بعض الأمثلة على بيانات تتبع الاستخدام التي يتم جمعها هي (هذه ليست قائمة شاملة): المعلومات المتعلقة بنظام التشغيل (إصدار cloud-init، وإصدار distro، وإصدار 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 لتغييرات التكوين، راجع المستندات التالية: