Using command module in ansible PlayBook


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

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • دستور whoami بر روی تمامی خادم‌های تحت مدیریت اجرا شود.
---
- name: PlayBook
  hosts: all
  gather_facts: no
  tasks:
  - name: run command
    command: whoami
...
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml -v
  • در صورتی که کد بالا به صورت موفقیت آمیز اجرا شده باشد، خروجی‌ای مشابه زیر دریافت خواهید کرد :
Using /etc/ansible/ansible.cfg as config file

PLAY [PlayBook] *************************************************************************************************************************************************

TASK [run command] *************************************************************************************************************************************************
changed: [172.16.0.248] => {"changed": true, "cmd": ["whoami"], "delta": "0:00:00.001956", "end": "2020-03-14 08:06:59.604045", "rc": 0, "start": "2020-03-14 08:06:59.602089", "stderr": "", "stderr_lines": [], "stdout": "root", "stdout_lines": ["root"]}
changed: [172.16.0.245] => {"changed": true, "cmd": ["whoami"], "delta": "0:00:00.003185", "end": "2020-03-14 15:36:44.263692", "rc": 0, "start": "2020-03-14 15:36:44.260507", "stderr": "", "stderr_lines": [], "stdout": "root", "stdout_lines": ["root"]}
changed: [172.16.0.247] => {"changed": true, "cmd": ["whoami"], "delta": "0:00:00.001457", "end": "2020-03-14 08:06:59.707917", "rc": 0, "start": "2020-03-14 08:06:59.706460", "stderr": "", "stderr_lines": [], "stdout": "root", "stdout_lines": ["root"]}

PLAY RECAP *********************************************************************************************************************************************************
172.16.0.245               : ok=1    changed=1    unreachable=0    failed=0
172.16.0.247               : ok=1    changed=1    unreachable=0    failed=0
172.16.0.248               : ok=1    changed=1    unreachable=0    failed=0

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • مسیری مشخص و پوسته‌ای مشخص برای ابزار ls در نظر گرفته شود.
- hosts: all
  tasks:
  - name: Ansible command module with chdir and executable parameters
    command: ls -lrt
    args:
      chdir: /home/mdtutorials2/command_chdir_example
      executable: /bin/bash
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • در صورتی که پرونده‌ای با نام shell.txt وجود نداشته باشد، پرونده‌ای با این نام ساخته شود.
- hosts: all
  tasks:
  - name: Ansible shell module creates parameter example.
    command: touch shell.txt
    args:
     chdir: /root/ansible
     creates: shell.txt
  • نکته: استفاده از پارامتر create باعث می‌شود تا در صورتی که پرونده‌ی shell.txt وجود داشته باشد، با خطا یا هشداری رو به رو نشویم.
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • به عنوان مثال کد زیر باعث می‌شود تا :
    • در صورتی که پرونده‌ای با نام shell.txt وجود داشته باشد، پرونده‌ای با این نام پاک شود.
- hosts: all
  tasks:
  - name: Ansible command module creates parameter example.
    command: rm shell.txt
    args:
     chdir: /root/ansible
     removes: shell.txt
  • نکته: استفاده از پارامتر remove باعث می‌شود تا در صورتی که پرونده‌ی shell.txt وجود نداشته باشد، با خطا یا هشداری رو به رو نشویم.
  • به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
  • به منظور اجرای پرونده‌ی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml

  • به منظور مطالعه‌ی بیشتر لینک‌های زیر پیشنهاد می‌شود :
https://www.mydailytutorials.com/introduction-shell-command-module-ansible/
https://docs.ansible.com/ansible/latest/modules/command_module.html

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

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

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