What is notify and handlers in ansible PlayBook


  • با استفاده از کلید notify و handlers می‌توان اجرای یک یا چند شرط را منوط به اجرای موفقیت آمیز شرطی دیگر کرد.
  • به عنوان مثال کد زیر باعث می‌شود تا :
    • ابتدا سرویس httpd بر روی خادم‌های تحت مدیریت گروه centos-servers نصب و راه اندازی شود.
    • سپس در صورتی که فرآیند نصب و راه اندازی با موفقیت صورت گرفته باشد، سرویس مروبطه روشن شود.
---
- name: PlayBook 
  hosts: centos-servers
  gather_facts: no
  tasks:
  - name: install apache web server
    yum: name=httpd state=latest
    notify:
    - start apache service
  handlers:
  - name: start apache service
    service: name=httpd state=started
...
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • ابتدا سرویس Nginx بر روی تمام خادم‌های تحت مدیریت نصب و راه اندازی شود.
    • سپس در صورتی که فرآیند نصب و راه اندازی با موفقیت صورت گرفته باشد، سرویس مروبطه روشن شود.
---
- hosts: all
  tasks: 
    - name: Install Nginx
      apt: pkg=nginx state=installed update_cache=true
      notify:
        - Start Nginx

  handlers:
    - name: Start Nginx
      service: name=nginx state=started
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • دو سرویس apache و polipo راه اندازی مجدد شوند.
---
- name: PlayBook
  hosts: all
  gather_facts: yes
  handlers:
    - name: restart polipo
      service:
        name: polipo
        state: restarted
      listen: "restart services"
    - name: restart apache
      service:
        name: apache2
        state: restarted
      listen: "restart services"

  tasks:
    - name: restart everything
      command: echo "this task will restart the web and proxy services"
      notify: "restart services"
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • به منظور مطالعه‌ی بیشتر لینک‌های زیر پیشنهاد می‌شود :
https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html
https://codereviewvideos.com/course/ansible-tutorial/video/ansible-handlers

  • آزمایش شده بر روی Ansible نسخه‌ی 2.5.1
  • آزمایش شده بر روی سیستم عامل Ubuntu 18.04

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *