- با استفاده از کلید register میتوان خروجی یک ماژول را درون یک متغیر ریخت و همچنین با استفاده از کلید debug میتوان محویات آن متغیر را چاپ نمود.
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا ماژول ping برای تمام خادمهای تحت مدیریت اجرا شود.
- سپس خروجی ماژول ping بر روی متغیری با نام result ریخته شود.
- در نهایت محتویات متغیر result خوانده و بر روی صفحه نمایش داده شود.
|
1 2 3 4 5 6 7 8 9 10 |
--- - name: PlayBook hosts: all gather_facts: no tasks: - name: use ping module ping: <span style="color: #ff0000;">register: result</span> <span style="color: #ff0000;"> - debug: var=result </span> |
- به منظور اجرای پروندهی PlayBook به شکل زیر عمل کنید :
|
1 |
# ansible-playbook playbook.yaml |
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا دست نوشتهی script.sh بر روی تمام خادمهای تحت مدیریت اجرا شود.
- سپس در صورت اجرای موفقیت آمیز این ماژول، متنی دلخواه نمایش داده شود.
|
1 2 3 4 5 6 7 8 9 10 |
--- - name: PlayBook hosts: all gather_facts: no tasks: - name: use script module script: /opt/script.sh - <span style="color: #ff0000;">debug</span>: <span style="color: #ff0000;">msg: run script module </span> |
- به منظور اجرای پروندهی PlayBook به شکل زیر عمل کنید :
|
1 |
# ansible-playbook playbook.yaml |
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا با استفاده از ماژول shell دستور find بر روی خادمهای تحت مدیریت اجرا شود.
- سپس خروجی دستور find درون متغیری با نام find_output ریخته شود.
- در نهایت محتویات متغیر find_output چاپ و نمایش داده شود.
|
1 2 3 4 5 6 7 8 9 10 |
- hosts: all tasks: - name: Ansible register variable basic example shell: "find *.txt" args: chdir: "/etc/" <span style="color: #ff0000;">register: find_output</span> - debug: <span style="color: #ff0000;">var: find_output</span> |
- به منظور اجرای پروندهی PlayBook به شکل زیر عمل کنید :
|
1 |
# ansible-playbook playbook.yaml |
- نکته: به منظور چاپ خروجی استاندارد ، پروندهی PlayBook زیر را در نظر بگیرید :
|
1 2 3 4 5 6 7 8 9 10 |
- hosts: all tasks: - name: Ansible register variable basic example shell: "find *.txt" args: chdir: "/etc/" register: find_output - debug: var: find_output.<strong><span style="color: #ff0000;">stdout</span></strong> |
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا با استفاده از ماژول shell دستور find بر روی خادمهای تحت مدیریت اجرا شود.
- سپس خروجی دستور find درون متغیری با نام with_output ریخته شود.
- در نهایت تنها خروجی استاندارد دستور find که درون متغیر with_output ریخته شده است، درون یک حلقه قرار گیرد.
|
1 2 3 4 5 6 7 8 9 10 11 |
- 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.<span style="color: #ff0000;">stdout_lines</span> }}" |
- پروندهی PlayBook بالا باعث میشود تا در صورتی که پروندهای درون مسیر مشخص شده یافت شد، یک پشتیبان از آن تهیه شود.
- نکته: در صورتی که چندین پرونده پیدا شد، این امر توسط حلقه به دفعات تکرار میشود.
- به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
- به منظور اجرای پروندهی PlayBook به شکل زیر عمل کنید :
|
1 |
# ansible-playbook playbook.yaml |
- در مثال بالا از پسوند stdout_lines در زمان اشاره به متغیر with_output استفاده کردیم.
- فهرست این دست از پسوندها به شرح زیر است :
|
1 2 3 4 5 6 7 8 9 10 11 |
changed cmd delta end failed rc start stderr stderr_lines stdout stdout_lines |
- به منظور مطالعهی بیشتر لینکهای زیر پیشنهاد میشود :
|
1 2 |
https://www.mydailytutorials.com/ansible-register-variables/ https://www.decodingdevops.com/ansible-register-module-with-examples/ |
- آزمایش شده بر روی Ansible نسخهی 2.5.1
- آزمایش شده بر روی سیستم عامل Ubuntu 18.04