Using service module in ansible PlayBook


  • با استفاده از این ماژول می‌توان مدیریت و کنترل بر روی سرویس‌های خادم‌های تحت مدیریت داشت.
  • لازم به ذکر است که این ماژول توانایی پشتیبانی از systemd ، sysV ، upstart و … را دارد.

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • در صورتی که سرویس httpd متوقف بود، آن را روشن کند.
---
- name: PlayBook 
  hosts: centos-servers
  gather_facts: no
  tasks:
  - name: Start service httpd, if not started
    service:
     name: httpd
     state: started
...
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • در صورتی که سرویس httpd روشن بود، آن را متوقف کند.
---
- name: PlayBook 
  hosts: centos-servers
  gather_facts: no
  tasks:
  - name: Stop service httpd, if started
    service:
     name: httpd
     state: stopped
...
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • سرویس httpd به طور کامل راه‌اندازی مجدد شود.
---
- name: PlayBook 
  hosts: centos-servers
  gather_facts: no
  tasks:
  - name: Restart service httpd, in all cases
    service:
     name: httpd
     state: restarted
...
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • تنها تنظیمات سرویس httpd دوباره خوانده شود. (عمل reload)
---
- name: PlayBook 
  hosts: centos-servers
  gather_facts: no
  tasks:
  - name: Reload service httpd, in all cases
    service:
     name: httpd
     state: reloaded
...
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • در صورتی که سرویس httpd غیر فعال بود، آن را فعال کند.
---
- name: PlayBook 
  hosts: centos-servers
  gather_facts: no
  tasks:
  - name: Enable service httpd, and not touch the state
    service:
     name: httpd
     enabled: yes
...
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • سرویس network تنها برای کارت شبکه‌ی eth0 راه اندازی مجدد شود.
---
- name: PlayBook 
  hosts: centos-servers
  gather_facts: no
  tasks:
  - name: Restart network service for interface eth0
    service:
     name: network
     state: restarted
     args: eth0
...
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • نکته: امکان دوباره خواندن Unit Files نیز وجود دارد. (ممکن است تغییراتی در پرونده‌های یونیت مربوط به یک سرویس اعمال کرده باشید، لذا برای راه اندازی مجدد سرویس، نیاز است که این پرونده‌ها نیز دوباره خوانده شوند.)
  • به عنوان مثال کد زیر باعث می‌شود تا :
    • در صورتی که سرویس docker متوقف بود، آن را روشن کند.
- hosts: all
  tasks:
  - name: Ansible service daemon reload example
    systemd:
      name: docker
      state: restarted
      daemon_reload: yes
  • در مثال بالا از ماژول systemd استفاده شده است.
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • به منظور مطالعه‌ی بیشتر لینک‌های زیر پیشنهاد می‌شود :
https://docs.ansible.com/ansible/latest/modules/service_module.html
https://www.mydailytutorials.com/linux-services-using-ansible-systemd-and-service-modules/

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

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

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