دعم تهيئة السحابة للأجهزة الظاهرية في 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 لتغييرات التكوين، راجع المستندات التالية: