تقسيم Playbooks باستخدام import وinclude
تضمين المهام الثابت مقابل الديناميكي
تقسيم Playbooks باستخدام import وinclude درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
يضرّكم الملف الضخم الواحد
يصعب قراءة playbook من 500 سطر وإعادة استخدامه. يتيح لكم Ansible تقسيم العمل إلى أجزاء وإدراجها عند الحاجة. ✂️
عائلتان: import وinclude
يوفّر Ansible أسلوبين لإعادة الاستخدام: import_* للتضمين الثابت وinclude_* للتضمين الديناميكي. والفرق بينهما هو التوقيت.
الاستيراد الثابت باستخدام import_tasks
تتم معالجة import_tasks مسبقًا عند تحليل playbook، قبل تشغيل أي مهمة. وهذا يجعله ثابتًا وقابلًا للتنبؤ.
- import_tasks: setup.ymlالتضمين الديناميكي باستخدام include_tasks
تتم معالجة include_tasks أثناء التشغيل وبالترتيب، ولذلك يمكنه الاستجابة للمتغيرات والنتائج التي تحددت مسبقًا في play.
- include_tasks: "{{ os_family }}.yml"لماذا يهم التوقيت
بما أن import ثابت، فلا يمكنكم استخدام متغير وقت التشغيل في اسم الملف الخاص به. ولهذا تحتاجون إلى include_tasks الديناميكي.
الحلقات تحتاج إلى include
هل تريدون تكرار ملف كامل؟ إن include_tasks وحده يدعم loop، لأن مجموعة الملفات تتحدد أثناء تشغيل play.
- include_tasks: user.yml
loop: "{{ users }}"تتصرف الوسوم بشكل مختلف
يُطبَّق الوسم الموجود على import_tasks على كل مهمة مستوردة، بينما يُطبَّق الوسم الموجود على include_tasks على تعليمة التضمين نفسها فقط.
استيراد ملفات Playbook كاملة
على المستوى الأعلى، استخدموا import_playbook لدمج ملفات Playbook كاملة. هذه هي الطريقة نفسها التي يجمع بها site.yml مشروعكم.
- import_playbook: webservers.yml
- import_playbook: dbservers.ymlإعادة الاستخدام عبر عمليات التشغيل
يمكن استيراد ملفات المهام المشتركة، مثل ملف bootstrap مشترك، إلى عدة ملفات Playbook، بحيث تكتبون المنطق مرة واحدة وتعيدون استخدامه في كل مكان.
إعداد افتراضي منطقي
فضّلوا import للخطوات المتوقعة التي تُشغَّل دائمًا. واستخدموا include فقط عندما تحتاجون فعلًا إلى قرارات وقت التشغيل، مثل الحلقات أو أسماء الملفات المتغيرة.
التقسيم عمليًا
يستورد play هنا ملف إعداد ثابتًا، ثم يضمّن ملفًا خاصًا بنظام التشغيل بشكل مشروط. أداتان، ومهمتان مختلفتان. 🎯
tasks:
- import_tasks: base.yml
- include_tasks: "{{ ansible_os_family }}.yml"تحقق سريع
تحتاجون إلى اسم ملف يُبنى من متغير وقت التشغيل. أي تعليمة تعمل؟
مراجعة
تعلّمتم أن import_* ثابت ويُحلَّل مسبقًا، بينما include_* ديناميكي ويُشغَّل في موضعه، مما يتيح الحلقات وأسماء الملفات المتغيرة. ✅
الأسئلة الشائعة
هل درس «تقسيم Playbooks باستخدام import وinclude» مجاني؟
نعم — نص درس «تقسيم Playbooks باستخدام import وinclude» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ماذا ستتعلم في «تقسيم Playbooks باستخدام import وinclude»؟
تضمين المهام الثابت مقابل الديناميكي تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟
لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «تقسيم Playbooks باستخدام import وinclude»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟
نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تخطيط المجلدات الموصى به
- مجلدا group_vars وhost_vars
- تقسيم Playbooks باستخدام import وinclude
- التسمية والتعليقات والأسلوب القابل للتوسّع