Handlers (Ansible)
Handlers (Ansible)
Handlers في Ansible هي إجراءات خاصة يتم تشغيلها فقط عندما يتم إعلامها بالتغيير. إنها ليست مهامًا عادية يتم تنفيذها بشكل تسلسلي كجزء من Playbook. بدلاً من ذلك، يتم استدعاؤها بواسطة مهام أخرى باستخدام كلمة مفتاحية `notify`. تعتبر الـ Handlers أداة قوية لإعادة تشغيل الخدمات أو تحديثها فقط عند الضرورة، مما يجعل عمليات النشر أكثر كفاءة وتقليل وقت التوقف عن العمل.
ما هي الـ Handlers ولماذا نستخدمها؟
تخيل أنك تقوم بتحديث ملف تكوين لخدمة معينة (مثل Apache أو Nginx). بعد التحديث، تحتاج إلى إعادة تشغيل هذه الخدمة لتطبيق التغييرات. بدلًا من إعادة تشغيل الخدمة دائمًا، بغض النظر عما إذا كان الملف قد تغير أم لا، يمكنك استخدام الـ Handlers. يتم تشغيل الـ Handler فقط إذا قامت مهمة بتغيير الملف. هذا يوفر الوقت ويقلل من التأثير على النظام.
الـ Handlers مفيدة بشكل خاص في الحالات التالية:
- إعادة تشغيل الخدمات: بعد تحديث ملفات التكوين.
- تحديث ذاكرة التخزين المؤقت: بعد تحديث ملفات القوالب.
- إعادة بناء فهرس البحث: بعد تحديث البيانات.
- تنفيذ مهام ما بعد التكوين: التي تعتمد على تغييرات معينة.
كيفية تعريف الـ Handlers
يتم تعريف الـ Handlers في قسم `handlers` في Playbook. يشبه تعريف الـ Handler تعريف المهمة، ولكن مع كلمة مفتاحية `handler` بدلاً من `task`.
- name: Restart Apache service: name: apache2 state: restarted
في هذا المثال، يتم تعريف Handler باسم "Restart Apache" يقوم بإعادة تشغيل خدمة Apache2.
كيفية إعلام الـ Handlers
يتم إعلام الـ Handlers بواسطة المهام باستخدام الكلمة المفتاحية `notify`. عندما تنفذ مهمة تغييرًا، فإنها "تُعلم" الـ Handler المرتبط بها.
- name: Update Apache configuration file copy: src: apache.conf dest: /etc/apache2/apache.conf notify: Restart Apache
في هذا المثال، إذا قامت مهمة `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/*
في هذا المثال، إذا تم تغيير `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** | مهمة | مهمة |
الروابط ذات الصلة
- Ansible
- Playbook
- Task
- Role
- Module
- Inventory
- Variables
- Templates
- Conditional Tasks
- Loops
- Error Handling
- Debugging
- Facts
- Ansible Galaxy
- Vault
استراتيجيات ذات صلة، التحليل الفني وتحليل حجم التداول
- استراتيجية المتوسط المتحرك
- استراتيجية كسر النطاق السعري
- استراتيجية التصحيح
- استراتيجية القمة والقاع
- مؤشر القوة النسبية (RSI)
- مؤشر الماكد (MACD)
- مؤشر ستوكاستيك
- تحليل فيبوناتشي
- نموذج الشموع اليابانية
- تحليل الحجم
- تحليل الشريط الزمني
- مستوى الدعم والمقاومة
- التقلب الضمني
- التحليل الأساسي
- إدارة المخاطر
ابدأ التداول الآن
سجل في IQ Option (الحد الأدنى للإيداع $10) افتح حساباً في Pocket Option (الحد الأدنى للإيداع $5)
انضم إلى مجتمعنا
اشترك في قناة Telegram الخاصة بنا @strategybin للحصول على: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات باتجاهات السوق ✓ مواد تعليمية للمبتدئين