Using script module in ansible PlayBook


  • با استفاده از این ماژول می‌توان انواع دست نوشته‌ها را بر روی خادم‌های تحت مدیریت اجرا کرد.

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • دست نوشته‌ی script.sh از مسیر opt/ بر روی گروهی خاص از خادم‌های تحت مدیریت اجرا شود.
---
- name: PlayBook
  hosts: centos-servers
  gather_facts: no
  tasks:
  - name: Run a script from /opt
    script: /opt/script.sh --some-argument 1234
...
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • دست نوشته‌ی httpd_installer.sh در صورتی اجرا شود که پرونده index.html در مسیر var/www/html/ وجود نداشته باشد.
---
- name: PlayBook
  hosts: centos-servers
  gather_facts: no
  tasks:
  - name: Run a script only if file.txt does not exist on the remote node
    script: /opt/httpd_installer.sh --some-argument 1234
    args:
     creates: /var/www/html/index.html
...
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • دست نوشته‌ی httpd_remover.sh در صورتی اجرا شود که پرونده index.html در مسیر var/www/html/ وجود داشته باشد.
---
- name: PlayBook
  hosts: centos-servers
  gather_facts: no
  tasks:
  - name: Run a script only if file.txt exists on the remote node
    script: /opt/httpd_installer.sh --some-argument 1234
    args:
     removes: /var/www/html/index.html
...
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • نکته: به طور کلی دست نوشته‌ها توسط ابزارهای دیگری یا اصطلاحا مفسرها اجرا می‌شوند.
  • به عنوان مثال دست نوشته‌های نوشته شده با زبان Bash توسط پرونده‌ای اجرایی در مسیر bin/bash/ اجرا می‌شوند.
  • به عنوان مثالی دیگر، دست نوشته‌های نوشته شده با زبان Python توسط پرونده‌ای اجرایی در مسیر usr/bin/python/ اجرا می‌شوند.
  • نکته: ممکن است مسیر قرارگیری این مفسرها در توزیع‌های مختلف متفاوت باشد. لذا با استفاده از پارامتر executable می‌توان تعیین نمود که مفسر مورد نظر از چه مسیری در خادم‌های تحت مدیریت، اجرا و خوانده شود.

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • دست نوشته‌ی script.sh توسط برنامه‌ی اجرایی usr/bin/bash/ در خادم‌های تحت مدیریت ، اجرا شود.
---
- name: PlayBook 06
  hosts: centos-servers
  gather_facts: no
  tasks:
  - name: Run a script using an executable in a non-system path
    script: /opt/script.sh
    args:
     executable: /usr/bin/bash
...
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • به منظور مطالعه‌ی بیشتر لینک‌های زیر پیشنهاد می‌شود :
https://docs.ansible.com/ansible/latest/modules/script_module.html

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

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

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