دعم تهيئة السحابة للأجهزة الظاهرية في Azure
ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ مجموعات المقياس المرنة
تشرح هذه المقالة الدعم الموجود لـ cloud-init لتكوين جهاز ظاهري (VM) أو مجموعات مقياس جهاز ظاهري في وقت التوافر في Azure. يتم تشغيل تكوينات cloud-init هذه على التمهيد الأول بمجرد توفير الموارد بواسطة Azure.
VM Provisioning هي العملية التي يقوم فيها 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 المعتمدين لدينا من أجل الحصول على صور ممكنة للسحابة في سوق Azure. ستجعل هذه الصور عمليات النشر والتكوينات السحابية لديك تعمل بسلاسة مع الأجهزة الظاهرية ومجموعات مقياس الجهاز الظاهري. في البداية، نتعاون مع شركاء توزيع Linux المعتمدين والمصدر لضمان وظائف cloud-init مع نظام التشغيل على Azure، ثم يتم تحديث الحزم وإتاحتها للجمهور في مستودعات حزم التوزيعة.
ثمة مرحلتان لإتاحة cloud-init لتوزيعات Linux المعتمدة على Azure، ودعم الحزمة، ثم دعم الصور:
- مستندات "دعم حزمة cloud-init على Azure" التي يتم دعم حزم cloud-init فصاعداً أو قيد المعاينة، بحيث يمكنك استخدام هذه الحزم مع نظام التشغيل في صورة مخصصة.
- مستندات "صورة cloud-init جاهزة" إذا تم تكوين الصورة بالفعل لاستخدام cloud-init.
متعارف عليه
| الموزع / الإصدار | العرض | SKU | إصدار | صورة cloud-init جاهزة | دعم حزمة cloud-init على Azure |
|---|---|---|---|---|---|
| Canonical 20.04 | UbuntuServer | 20.04-LTS | الأحدث | نعم | نعم |
| Canonical 18.04 | UbuntuServer | 18.04-LTS | الأحدث | نعم | نعم |
RHEL
| الموزع / الإصدار | العرض | SKU | إصدار | صورة cloud-init جاهزة | دعم حزمة cloud-init على Azure |
|---|---|---|---|---|---|
| RedHat 7 | RHEL | 7.7، و7.8، و7_9 | الأحدث | نعم | نعم |
| RedHat 8 | RHEL | 8.1، و8.2، و8_3، و8_4 | الأحدث | نعم | نعم |
- يتم توفير جميع وحدات RedHat SKUs الأخرى بدءاً من RHEL 7 (الإصدار 7.7) وRHEL 8 (الإصدار 8.1) بما في ذلك صور Gen1 وGen2 باستخدام cloud-init. صور RHEL 6 لا تدعم خاصية cloud-init.
CentOS
| الموزع / الإصدار | العرض | SKU | إصدار | صورة cloud-init جاهزة | دعم حزمة cloud-init على Azure |
|---|---|---|---|---|---|
| OpenLogic 7 | CentOS | 7.7، و7.8، و7.9 | الأحدث | نعم | نعم |
| OpenLogic 8 | CentOS | 8.1، و8.2، و8.3 | الأحدث | نعم | نعم |
- يتم توفير جميع وحدات 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 | الأحدث | نعم | نعم |
| Oracle 8 | Oracle Linux | 81، وol82، وol83-lvm، وol84-lvm | الأحدث | نعم | نعم |
- يتم توفير جميع وحدات 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 | الأحدث | نعم | نعم |
| SUSE 12 | SLES (SUSE Linux Enterprise Server) | sp5 | الأحدث | نعم | نعم |
- يتم توفير جميع وحدات 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 | نعم | نعم - دعم من إصدار الحزمة: 20.2-2~deb10u1 |
| debian (Gen2) | debian-10 | 10-cloudinit-gen2 | 0.20201013.422 | نعم | نعم - دعم من إصدار الحزمة: 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 عند قيام الجهاز الظاهري بالتمهيد.
لا تنطوي تكوينات 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 لإنشاء الملف وراجع قائمة بالمحررين المتاحين. اختر #1 لاستخدام المحرر nano. تأكد من نسخ ملف cloud-init بالكامل وبشكل صحيح، خاصة السطر الأول:
#cloud-config
package_upgrade: true
packages:
- httpd
ملاحظة
يحتوي cloud-init على عدة أنواع إدخال، وسيستخدم cloud-init السطر الأول من customData/userData للإشارة إلى كيفية معالجة الإدخال، على سبيل المثال #cloud-config يشير إلى أنه يجب معالجة المحتوى كتكوين cloud-init.
اضغط على Ctrl + X للخروج من الملف، واكتب y لحفظ الملف، ثم اضغط على Enter لتأكيد اسم الملف عند الخروج.
تتمثل الخطوة الأخيرة في إنشاء جهاز ظاهري باستخدام الأمر az vm create.
يقوم المثال التالي بإنشاء VM المسمى 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 وإصلاحها.
للحصول على أمثلة على cloud-init لتغييرات التكوين، راجع المستندات التالية: