extra vars
पैरामीटर के आधार पर मैं ansible playbook
कैसे Ansible प्लेबुक में गतिशील चर लिखने के
ansible-playbook playbook.yml -e "param1=value1 param2=value2 param3=value3"
अगर केवल param1 पारित कर में चर मूल्य लिखने के लिए की आवश्यकता है
myvariable: 'param1'
अगर केवल param1, param2 पास
myvariable: 'param1,param2'
,210
तो param1, param2, param3 पारित कर रहे हैं तो वैरिएबल मान जब मैं टेम्पलेट के माध्यम से गतिशील चर बनाने का प्रयास करें
myvariable: 'param1,param2,param3'
हो जाएगा तो मेरे प्लेबुक हमेशा पिछले चर मूल्य लेता है। लेकिन dest=roles/myrole/vars/main.yml
के अंदर इसका लेखन सही मूल्य है।
मैं क्या एक यहाँ कोशिश
- hosts: local
user: roop
gather_facts: yes
connection: local
tasks:
- template: src=roles/myrole/templates/myvar.j2 dest=roles/myrole/vars/main.yml
- debug: var=myvariable
roles:
- { role: myrole }
तो myrole अंदर निर्देशिका मैं template
और vars
- roles
- myrole
- vars/main.yml
- templates/myvar.j2
टेम्पलेट्स बनाया है बनाने/myvar.j2
{% if param1 is defined and param2 is defined and param3 is defined %}
myvariable: 'param1,param2,param3'
{% elif param1 is defined and param2 is defined %}
myvariable: 'param1,param2'
{% elif param1 is defined %}
myvariable: 'param1'
{% else %}
myvariable: 'default-param'
{% endif %}
,210
मुझे पता है के रूप में अगर केवल दो हालत तो मैं जैसे
नीचे{{ 'param1,param2' if param1 is defined and param2 is defined else 'default-param' }}
<do something> if <something is true> else <do something else>
क्या यह संभव है inline expression
ऊपर की तरह में if - elif - else
इस inline expression
उपयोग कर सकते हैं। या उत्तरदायी प्लेबुक में गतिशील रूप से मूल्य आवंटित करने का कोई अन्य तरीका?
नाइस के मूल्यों के अनुसार my_var को सौंपा जा करने के लिए मान। यह काम कर रहा है। – Roopendra
@Roopendra 3 मानों की एक सूची को जोड़ने के लिए कोड की 16 लाइनें बहुत अच्छी हैं। – ceving
@ceving से सहमत है लेकिन कभी-कभी हम समाधान पर ध्यान देते हैं और बाद में अनुकूलन करते हैं। उस समय यह एकमात्र समाधान था। अगर आप अनुकूलित उत्तर साझा करेंगे तो मुझे खुशी होगी। शायद यह अन्य लोगों को भी मदद करेगा। – Roopendra