0Pricing
Ansible Academy · درس

delegate_to وrun_once للتنسيق

شغّل مهمة على مضيف واحد نيابةً عن عدة مضيفين

delegate_to وrun_once للتنسيق درس مجاني في Ansible Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ansible Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ansible Academy 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) وفتح باقي دورة Ansible Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ansible Academy 4 دروس في المجموع.

ماذا ستتعلم في «delegate_to وrun_once للتنسيق»؟

شغّل مهمة على مضيف واحد نيابةً عن عدة مضيفين تتمرن على Ansible Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Ansible Academy؟

لا تُشترط خبرة سابقة. Ansible Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «delegate_to وrun_once للتنسيق»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Ansible Academy هذا؟

نعم. كل درس في Ansible Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أتمتة أجهزة الشبكة باستخدام cli_command
  2. delegate_to وrun_once للتنسيق
  3. تنسيق طبقات الويب والتطبيق وقاعدة البيانات
  4. إخراج العقد من Load Balancer ثم إعادة تفعيلها
← العودة إلى Ansible Academy