- همانند تمام زبانهای برنامه نویسی، در زبان Yaml نیز میتوان از متغیر استفاده نمود.
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا دو متغیر با نامهای my_hosts و my_command تعریف و مقادیری برای آنان در نظر گرفته شود.
- سپس دستور whoami بر روی تمامی خادمهای تحت مدیریت اجرا شود.
|
1 2 3 4 5 6 7 8 9 10 11 |
--- - name: PlayBook hosts: '{{my_hosts}}' gather_facts: no vars: my_hosts: all my_command: whoami tasks: - name: run whoami command in all servers command: '{{my_command}}' ... |
- به منظور اجرای پروندهی PlayBook به شکل زیر عمل کنید :
|
1 |
# ansible-playbook playbook.yaml |
- لطفا توجه داشته باشید که متغیر باید در درون ‘{{}}’ قرار داشته باشد.
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا دو متغیر با نامهای my_hosts و my_command تعریف شود اما مقادیری برای آنان در نظر گرفته نشود.
|
1 2 3 4 5 6 7 8 |
--- - name: PlayBook hosts: '{{my_hosts}}' gather_facts: no tasks: - name: run command in all servers command: '{{my_command}}' ... |
- نکته: با توجه به این که مقادیری برای متغیرها در نظر گرفته نشده است، لذا در زمان اجرای PlayBook باید مقادیر هر متغیر مشخص شود.
|
1 |
ansible-playbook playbook.yaml --extra-vars "my_hosts=all my_command=whoami" |
- نکته: برای معرفی و تعیین متغیر از سویچ extra-vars– استفاده میشود.
- نکته: در درون پروندههای PlayBook از آرایه نیز میتوان استفاده نمود.
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا آرایهای با نام hello تعریف شده و مقادیری برای آن در نظر گرفته میشود.
- سپس مقداری خاص از این آرایه فراخوانی میشود تا چاپ و نمایش داده شود.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
- hosts: all vars: hello: - World - Asia - South America - North America - Artic - Antartic - Oceania - Europe - Africa tasks: - name: Ansible List variable Example debug: msg: "{{ hello[2] }}" |
- نکته: برای اشاره به اولین مقدار باید از عدد صفر شروع کرد. لذا عدد دو در مثال بالا اشاره به مقدار South America دارد.
- به منظور اجرای پروندهی PlayBook به شکل زیر عمل کنید :
|
1 |
# ansible-playbook playbook.yaml |
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا آرایهای با نام hello تعریف شود و مقادیری برای آن در نظر گرفته شود.
- سپس با استفاده از حلقه کلیه مقادیر آن چاپ و نمایش داده شود.
|
1 2 3 4 5 6 7 8 9 |
- hosts: all vars: hello: [Asia, Americas, Artic, Antartic ,Oceania,Europe,Africa] tasks: - name: Ansible array variables example debug: msg: "{{ item }}" with_items: - "{{ hello }}" |
- به منظور اجرای پروندهی PlayBook به شکل زیر عمل کنید :
|
1 |
# ansible-playbook playbook.yaml |
- نکته: امکان تعریف مقادیر متغیر به صورت کلید و مقدار نیز وجود دارد.
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا متغیری با نام python تعریف شده و مقادیر آن به صورت کلید و مقدار در نظر گرفته شود.
- سپس مقادیر این متغیر چاپ و نمایش داده شود.
|
1 2 3 4 5 6 7 8 9 10 |
- hosts: all vars: python: Designer: 'Guido van Rosum' Developer: 'Python Software Foundation' OS: 'Cross-platform' tasks: - name: Ansible Dictionary Example debug: msg: "{{ <span style="color: #ff0000;">python</span> }}" |
- نکته: لطفا به نحوهی اشاره به متغیر که به صورت رنگی مشخص شده است، دقت کنید.
- به منظور اجرای پروندهی PlayBook به شکل زیر عمل کنید :
|
1 |
# ansible-playbook playbook.yaml |
- نکته: امکان اشاره به مقادیری خاص از متغیر نیز وجود دارد.
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا متغیری با نام python تعریف شده و مقادیر آن به صورت کلید و مقدار در نظر گرفته شود.
- سپس مقادیری خاص از این متغیر چاپ و نمایش داده شود.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
- hosts: all vars: python: Designer: 'Guido van Rosum' Developer: 'Python Software Foundation' OS: 'Cross-platform' tasks: - name: Ansible Hash Example debug: msg: "{{<span style="color: #ff0000;">python['Designer']</span> }}" - name: Ansible Find Example debug: msg: "{{<span style="color: #ff0000;">python.Designer</span> }}" |
- نکته: لطفا به نحوهی اشاره به متغیر که به صورت رنگی مشخص شده است، دقت کنید.
- به منظور اجرای پروندهی PlayBook به شکل زیر عمل کنید :
|
1 |
# ansible-playbook playbook.yaml |
- نکته: امکان چاپ نام کلید و مقدار آن از یک متغیر وجود دارد.
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا متغیری با نام python تعریف شده و مقادیر آن به صورت کلید و مقدار در نظر گرفته شود.
- سپس مقادیری خاص از این متغیر چاپ و نمایش داده شود.
|
1 2 3 4 5 6 7 8 9 10 11 |
- hosts: all vars: python: Designer: 'Guido van Rossum' Developer: 'Python Software Foundation' OS: 'Cross-platform' tasks: - name: Ansible Dictionary variable Example debug: msg: "Key is {{ item.key}} and value is {{item.value}}" with_dict: "{{ python }}" |
- به منظور اجرای پروندهی PlayBook به شکل زیر عمل کنید :
|
1 |
# ansible-playbook playbook.yaml |
- در صورت اجرای موفقیت آمیز پروندهی PlayBook ، خروجیای مشابه زیر دریافت خواهید کرد :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
PLAY [all] ******************************************************************************************************************************************* TASK [Gathering Facts] ******************************************************************************************************************************* ok: [172.16.0.245] TASK [Ansible Dictionary variable Example] *********************************************************************************************************** ok: [172.16.0.245] => (item=None) => { "msg": "Key is <span style="color: #ff0000;">Designer</span> and value is Guido <span style="color: #0000ff;">van Rossum</span>" } ok: [172.16.0.245] => (item=None) => { "msg": "Key is <span style="color: #ff0000;">OS</span> and value is <span style="color: #0000ff;">Cross-platform</span>" } ok: [172.16.0.245] => (item=None) => { "msg": "Key is <span style="color: #ff0000;">Developer</span> and value is <span style="color: #0000ff;">Python Software Foundation</span>" } PLAY RECAP ******************************************************************************************************************************************* 172.16.0.245 : ok=2 changed=0 unreachable=0 failed=0 |
- به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
- نکته: امکان تخصیص جملههای چند خطی به عنوان مقدار برای متغیر وجود دارد.
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا دو متغیر با نامهای include_newlines_example و ignore_newlines_example2 تعریف شود.
- سپس مقادیر این متغیر چاپ و نمایش داده شود.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
- hosts: all vars: include_newlines_example: | The new line charaters will appear ignore_newlines_example2: > The new line character will be removed. Useful when editing lines tasks: - name: Ansible varible multiple line Example debug: msg: "{{ include_newlines_example.split('\n') }}" - name: Ansible variables multiline Example debug: msg: "{{ ignore_newlines_example2.split('\n') }}" |
- به منظور اجرای پروندهی PlayBook به شکل زیر عمل کنید :
|
1 |
# ansible-playbook playbook.yaml |
- در صورت اجرای موفقیت آمیز پروندهی PlayBook ، خروجیای مشابه زیر دریافت خواهید کرد :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
PLAY [all] ******************************************************************************************************************************************* TASK [Gathering Facts] ******************************************************************************************************************************* ok: [172.16.0.245] TASK [Ansible varible multiple line Example] ********************************************************************************************************* ok: [172.16.0.245] => { "msg": [ <span style="color: #ff0000;">"The new line charaters",</span> <span style="color: #ff0000;">"will appear ",</span> "" ] } TASK [Ansible variables multiline Example] *********************************************************************************************************** ok: [172.16.0.245] => { "msg": [ <span style="color: #ff0000;">"The new line character will be removed. Useful when editing lines",</span> "" ] } |
- به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
- به منظور مطالعهی بیشتر لینکهای زیر پیشنهاد میشود :
|
1 2 |
https://www.mydailytutorials.com/the-basics-of-ansible-variables/ https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html |
- آزمایش شده بر روی Ansible نسخهی 2.5.1
- آزمایش شده بر روی سیستم عامل Ubuntu 18.04