التعمق في تفاصيل cloud-init

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

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

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

فهم تكوين Cloud-Init

يستخدم تكوين جهاز ظاهري للتشغيل على نظام أساسي cloud-init لتطبيق تكوينات متعددة. التكوينات الرئيسية التي تتفاعل معها هي User data (customData)، والتي تدعم تنسيقات متعددة. لمزيد من المعلومات، راجع تنسيقات بيانات المستخدم ووثائق cloud-init 21.2. لديك أيضا القدرة على إضافة وتشغيل البرامج النصية (/var/lib/cloud/scripts) للتكوين الآخر.

صور Azure Marketplace المكونة مسبقا

تم خبز بعض التكوينات بالفعل في صور Azure Marketplace التي تأتي مع cloud-init.

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

  • تكوين وقت التشغيل (/run/cloud-init).

  • تكوين الصورة (/etc/cloud)، مثل /etc/cloud/cloud.cfg، /etc/cloud/cloud.cfg.d/*.cfg. مثال على مكان استخدام هذا التكوين في Azure، من الشائع أن يكون لدى صور نظام التشغيل Linux مع cloud-init توجيه مصدر بيانات Azure الذي يخبر مصدر البيانات السحابي الذي يجب أن يستخدمه مصدر البيانات، يوفر هذا التكوين وقت تهيئة السحابة:

    sudo cat /etc/cloud/cloud.cfg.d/90_dpkg.cfg
    
    # to update this file, run dpkg-reconfigure cloud-init
    datasource_list: [ Azure ]
    

مراحل تمهيد Cloud-init (تكوين المعالجة)

عند توفير الأجهزة الظاهرية مع cloud-init، هناك خمس مراحل تمهيد التكوين. الإخراج من هذه المراحل مرئي في السجلات.

  1. مرحلة المنشئ: يبدأ منشئ نظام cloud-init، ويحدد وجوب تضمين cloud-init في أهداف التمهيد، وإذا كان الأمر كذلك، فإنه يتيح cloud-init.

  2. Cloud-init Local Stage: هنا، يبحث cloud-init عن مصدر بيانات "Azure" المحلي، والذي يمكن cloud-init من الواجهة مع Azure، وتطبيق تكوين شبكة، بما في ذلك الاحتياطي.

  3. مرحلة Cloud-init (الشبكة): يجب أن تكون الشبكات عبر الإنترنت، ويجب إنشاء NIC ومعلومات جدول التوجيه. في هذه المرحلة، يتم تشغيل الوحدات النمطية المدرجة في cloud_init_modules /etc/cloud/cloud.cfg . يتم تحميل الجهاز الظاهري في Azure، ويتم تنسيق القرص المؤقت، وتعيين اسم المضيف، جنبا إلى جنب مع المهام الأخرى.

    فيما يلي بعض من cloud_init_modules:

    - migrator
    - seed_random
    - bootcmd
    - write-files
    - growpart
    - resizefs
    - disk_setup
    - mounts
    - set_hostname
    - update_hostname
    - ssh
    

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

  4. مرحلة تكوين Cloud-init: في هذه المرحلة، الوحدات النمطية المحددة cloud_config_modules والمدرجة في /etc/cloud/cloudتشغيلات .cfg.

  5. Cloud-init Final Stage: في هذه المرحلة النهائية، يتم تشغيل الوحدات النمطية في cloud_final_modules، المدرجة في /etc/cloud/cloud.cfg. هنا الوحدات النمطية التي تحتاج إلى تشغيل في وقت متأخر من عملية التمهيد، مثل عمليات تثبيت الحزم، وتشغيل البرامج النصية، وما إلى ذلك.

    • خلال هذه المرحلة، يمكنك تشغيل البرامج النصية عن طريق وضعها في الدلائل ضمن /var/lib/cloud/scripts:
      • per-boot - البرامج النصية داخل هذا الدليل، تعمل على كل إعادة تشغيل
      • per-instance - يتم تشغيل البرامج النصية داخل هذا الدليل عند تمهيد مثيل جديد لأول مرة
      • per-once - يتم تشغيل البرامج النصية داخل هذا الدليل مرة واحدة فقط

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

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