- با استفاده از کلید register میتوان خروجی یک ماژول را درون یک متغیر ریخت و همچنین با استفاده از کلید debug میتوان محویات آن متغیر را چاپ نمود.
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا ماژول ping برای تمام خادمهای تحت مدیریت اجرا شود.
- سپس خروجی ماژول ping بر روی متغیری با نام result ریخته شود.
- در نهایت محتویات متغیر result خوانده و بر روی صفحه نمایش داده شود.
---
- name: PlayBook
hosts: all
gather_facts: no
tasks:
- name: use ping module
ping:
register: result
- debug: var=result
- به منظور اجرای پروندهی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا دست نوشتهی script.sh بر روی تمام خادمهای تحت مدیریت اجرا شود.
- سپس در صورت اجرای موفقیت آمیز این ماژول، متنی دلخواه نمایش داده شود.
---
- name: PlayBook
hosts: all
gather_facts: no
tasks:
- name: use script module
script: /opt/script.sh
- debug:
msg: run script module
- به منظور اجرای پروندهی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا با استفاده از ماژول shell دستور find بر روی خادمهای تحت مدیریت اجرا شود.
- سپس خروجی دستور find درون متغیری با نام find_output ریخته شود.
- در نهایت محتویات متغیر find_output چاپ و نمایش داده شود.
- hosts: all
tasks:
- name: Ansible register variable basic example
shell: "find *.txt"
args:
chdir: "/etc/"
register: find_output
- debug:
var: find_output
- به منظور اجرای پروندهی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml
- نکته: به منظور چاپ خروجی استاندارد ، پروندهی PlayBook زیر را در نظر بگیرید :
- hosts: all
tasks:
- name: Ansible register variable basic example
shell: "find *.txt"
args:
chdir: "/etc/"
register: find_output
- debug:
var: find_output.stdout
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا با استفاده از ماژول shell دستور find بر روی خادمهای تحت مدیریت اجرا شود.
- سپس خروجی دستور find درون متغیری با نام with_output ریخته شود.
- در نهایت تنها خروجی استاندارد دستور find که درون متغیر with_output ریخته شده است، درون یک حلقه قرار گیرد.
- hosts: all
tasks:
- name: Ansible register with_items example
shell: "find *.txt"
args:
chdir: "/Users/mdtutorials2/Documents/Ansible"
register: with_output
- shell: "cp {{ item }} {{item}}_bkp"
with_items:
- "{{ with_output.stdout_lines }}"
- پروندهی PlayBook بالا باعث میشود تا در صورتی که پروندهای درون مسیر مشخص شده یافت شد، یک پشتیبان از آن تهیه شود.
- نکته: در صورتی که چندین پرونده پیدا شد، این امر توسط حلقه به دفعات تکرار میشود.
- به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
- به منظور اجرای پروندهی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml
- در مثال بالا از پسوند stdout_lines در زمان اشاره به متغیر with_output استفاده کردیم.
- فهرست این دست از پسوندها به شرح زیر است :
changed
cmd
delta
end
failed
rc
start
stderr
stderr_lines
stdout
stdout_lines
- به منظور مطالعهی بیشتر لینکهای زیر پیشنهاد میشود :
https://www.mydailytutorials.com/ansible-register-variables/
https://www.decodingdevops.com/ansible-register-module-with-examples/
- آزمایش شده بر روی Ansible نسخهی 2.5.1
- آزمایش شده بر روی سیستم عامل Ubuntu 18.04