Handlers (Ansible)

From binaryoption
Jump to navigation Jump to search
Баннер1

Handlers (Ansible)

Handlers في Ansible هي إجراءات خاصة يتم تشغيلها فقط عندما يتم إعلامها بالتغيير. إنها ليست مهامًا عادية يتم تنفيذها بشكل تسلسلي كجزء من Playbook. بدلاً من ذلك، يتم استدعاؤها بواسطة مهام أخرى باستخدام كلمة مفتاحية `notify`. تعتبر الـ Handlers أداة قوية لإعادة تشغيل الخدمات أو تحديثها فقط عند الضرورة، مما يجعل عمليات النشر أكثر كفاءة وتقليل وقت التوقف عن العمل.

ما هي الـ Handlers ولماذا نستخدمها؟

تخيل أنك تقوم بتحديث ملف تكوين لخدمة معينة (مثل Apache أو Nginx). بعد التحديث، تحتاج إلى إعادة تشغيل هذه الخدمة لتطبيق التغييرات. بدلًا من إعادة تشغيل الخدمة دائمًا، بغض النظر عما إذا كان الملف قد تغير أم لا، يمكنك استخدام الـ Handlers. يتم تشغيل الـ Handler فقط إذا قامت مهمة بتغيير الملف. هذا يوفر الوقت ويقلل من التأثير على النظام.

الـ Handlers مفيدة بشكل خاص في الحالات التالية:

  • إعادة تشغيل الخدمات: بعد تحديث ملفات التكوين.
  • تحديث ذاكرة التخزين المؤقت: بعد تحديث ملفات القوالب.
  • إعادة بناء فهرس البحث: بعد تحديث البيانات.
  • تنفيذ مهام ما بعد التكوين: التي تعتمد على تغييرات معينة.

كيفية تعريف الـ Handlers

يتم تعريف الـ Handlers في قسم `handlers` في Playbook. يشبه تعريف الـ Handler تعريف المهمة، ولكن مع كلمة مفتاحية `handler` بدلاً من `task`.

Admin (talk)ansible handlers:

 - name: Restart Apache
   service:
     name: apache2
     state: restarted

Admin (talk)

في هذا المثال، يتم تعريف Handler باسم "Restart Apache" يقوم بإعادة تشغيل خدمة Apache2.

كيفية إعلام الـ Handlers

يتم إعلام الـ Handlers بواسطة المهام باستخدام الكلمة المفتاحية `notify`. عندما تنفذ مهمة تغييرًا، فإنها "تُعلم" الـ Handler المرتبط بها.

Admin (talk)ansible tasks:

 - name: Update Apache configuration file
   copy:
     src: apache.conf
     dest: /etc/apache2/apache.conf
   notify: Restart Apache

Admin (talk)

في هذا المثال، إذا قامت مهمة `copy` بتغيير ملف `/etc/apache2/apache.conf`، فسيتم إعلام الـ Handler "Restart Apache" بتشغيله.

ترتيب تنفيذ الـ Handlers

إذا قامت عدة مهام بإعلام نفس الـ Handler، فسيتم تشغيل الـ Handler مرة واحدة فقط في نهاية تشغيل الـ Playbook. يتم تنفيذ الـ Handlers بترتيب تعريفها في الـ Playbook. هذا يعني أنه إذا كان لديك عدة Handlers، فمن المهم ترتيبها بشكل صحيح لضمان تنفيذها بالترتيب المطلوب. راجع Playbook Structure لمزيد من التفاصيل.

مثال كامل

هذا مثال كامل يوضح كيفية استخدام الـ Handlers:

Admin (talk)ansible --- - hosts: webservers

 become: yes
 tasks:
   - name: Update Apache configuration file
     copy:
       src: apache.conf
       dest: /etc/apache2/apache.conf
     notify: Restart Apache
   - name: Update index.html
     copy:
       src: index.html
       dest: /var/www/html/index.html
     notify: Clear Cache
 handlers:
   - name: Restart Apache
     service:
       name: apache2
       state: restarted
   - name: Clear Cache
     command: rm -rf /tmp/*

Admin (talk)

في هذا المثال، إذا تم تغيير `apache.conf`، فسيتم إعادة تشغيل Apache. وإذا تم تغيير `index.html`، فسيتم مسح ذاكرة التخزين المؤقت.

اعتبارات مهمة

  • الـ Idempotency: تأكد من أن الـ Handlers الخاصة بك idempotent، أي أنها يمكن تشغيلها عدة مرات دون التسبب في أي آثار جانبية غير مرغوب فيها.
  • الترتيب: انتبه إلى ترتيب الـ Handlers، خاصةً إذا كانت هناك تبعيات بينها.
  • الأداء: استخدم الـ Handlers بحكمة، حيث يمكن أن تؤثر على أداء الـ Playbook. تجنب تشغيل الـ Handlers غير الضرورية.
  • استخدام الشرطية: يمكنك استخدام الشرطية (`when`) في الـ Handlers لتشغيلها فقط في ظل ظروف معينة. راجع Conditional Tasks لمزيد من المعلومات.
  • الـ Meta-parameters: استخدم `meta: flush_handlers` لفرض تنفيذ جميع الـ Handlers المعلقة في أي وقت.

مقارنة بين المهام و الـ Handlers

| الميزة | المهام | الـ Handlers | |---|---|---| | **التنفيذ** | يتم تشغيلها بشكل تسلسلي | يتم تشغيلها فقط عند إعلامها | | **الكلمة المفتاحية** | `task` | `handler` | | **الإعلام** | لا يوجد | `notify` | | **الترتيب** | ترتيب التعريف في الـ Playbook | ترتيب التعريف، ولكن يتم تنفيذها مرة واحدة فقط في النهاية | | **Idempotency** | مهمة | مهمة |

الروابط ذات الصلة

استراتيجيات ذات صلة، التحليل الفني وتحليل حجم التداول


ابدأ التداول الآن

سجل في IQ Option (الحد الأدنى للإيداع $10) افتح حساباً في Pocket Option (الحد الأدنى للإيداع $5)

انضم إلى مجتمعنا

اشترك في قناة Telegram الخاصة بنا @strategybin للحصول على: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات باتجاهات السوق ✓ مواد تعليمية للمبتدئين

Баннер