delegate_to وrun_once للتنسيق
شغّل مهمة على مضيف واحد نيابةً عن عدة مضيفين
delegate_to وrun_once للتنسيق درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
لا تعمل المهام دائمًا حيث تتوقع
افتراضيًا، تعمل كل مهمة على مضيفها المستهدف. ولأغراض التنسيق، قد تحتاج أحيانًا إلى تشغيل مهمة في مكان آخر تمامًا. 🎯
تعرّف على delegate_to
تشغّل الكلمة المفتاحية delegate_to مهمةً على مضيف مختلف عن المضيف الحالي، مع الاستمرار في استخدام متغيرات ذلك المضيف.
- name: Add web node to load balancer
community.general.haproxy:
host: "{{ inventory_hostname }}"
state: enabled
delegate_to: lb01حالة استخدام شائعة
أثناء التكرار على عُقد الويب، فوّض تغيير موازن التحميل إلى مضيف LB. يظل الـ play موجّهًا لكل عُقدة، لكن يُنفَّذ الإجراء على LB.
التفويض إلى localhost
شغّل مهمةً على عقدة التحكم لديك من خلال تفويضها إلى localhost. وهذا مناسب جدًا لاستدعاء واجهة API أو إرسال إشعار من مكان واحد.
- name: Notify chat
ansible.builtin.uri:
url: "{{ webhook }}"
method: POST
delegate_to: localhostتبقى المتغيرات مع المضيف الأصلي
ينقل التفويض مكان تشغيل المهمة، وليس الحقائق التي تراها. يظل inventory_hostname يشير إلى الهدف الأصلي، لا إلى المضيف المفوَّض إليه.
تعرّف على run_once
تشغّل الكلمة المفتاحية run_once المهمة مرةً واحدةً للدفعة بأكملها، وليس مرةً لكل مضيف. يختار Ansible أول مضيف لتنفيذها.
- name: Run database migration
ansible.builtin.command: ./migrate.sh
run_once: trueلماذا يهم run_once
يجب تنفيذ بعض الإجراءات مرةً واحدةً فقط، مثل ترحيل قاعدة البيانات أو انتخاب قائد. ويمنع run_once كل مضيف من تكرار الخطوة المشتركة نفسها.
اجمع بينهما
اجمع بين run_once وdelegate_to لتنفيذ إجراء واحد على مضيف واحد محدد، مثل تشغيل ترحيل من عُقدة تطبيق واحدة.
- name: Migrate db once
ansible.builtin.command: ./migrate.sh
run_once: true
delegate_to: app01تتم مشاركة النتائج
مع run_once، تتم مشاركة النتيجة المسجّلة بين جميع مضيفي الدفعة. ويرى الجميع المخرجات الناتجة عن ذلك التنفيذ الوحيد.
- ansible.builtin.command: cat /etc/version
run_once: true
register: verجمع الحقائق من المضيف المفوَّض إليه
استخدم delegate_facts إذا أردت إسناد الحقائق التي جُمعت إلى المضيف المفوَّض إليه بدلًا من المضيف الحالي. وهو معطّل افتراضيًا.
التنسيق، وليس مجرد التهيئة
تحوّل هذه الكلمات المفتاحية معًا التهيئة لكل مضيف إلى تنسيق حقيقي: أي تنسيق إجراء واحد عبر مجموعة من المضيفين من نقطة واحدة.
اختبار سريع
دعونا نتحقق من هذه الكلمات المفتاحية الخاصة بالتنسيق.
مراجعة
استخدم delegate_to لتشغيل مهمة على مضيف آخر، وrun_once لتشغيلها مرةً واحدةً فقط لكل دفعة، وهما أساس التنسيق. ✅
الأسئلة الشائعة
هل درس «delegate_to وrun_once للتنسيق» مجاني؟
نعم — نص درس «delegate_to وrun_once للتنسيق» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ماذا ستتعلم في «delegate_to وrun_once للتنسيق»؟
شغّل مهمة على مضيف واحد نيابةً عن عدة مضيفين تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟
لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «delegate_to وrun_once للتنسيق»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟
نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أتمتة أجهزة الشبكة باستخدام cli_command
- delegate_to وrun_once للتنسيق
- تنسيق طبقات الويب والتطبيق وقاعدة البيانات
- إخراج العقد من Load Balancer ثم إعادة تفعيلها