2016-10-13 11 views
11

में इन्वेंट्री होस्ट चर का उपयोग कर मैं उत्तर 2.1 का उपयोग कर रहा हूं। मेरे पास निम्न सूची होस्ट फ़ाइल है और एक नाटक द्वारा एक भूमिका निभाई जा रही है जिसे होस्ट फ़ाइल चर के उपयोग की आवश्यकता है। यह कैसे उपयोग करने के लिए पर कोई विचार (वर्तमान में एक त्रुटि हो रही है):उत्तरदायी प्लेबुक

{{ hostvars.ansible_ssh_host }} 
:

मेजबान फ़ाइल

[test1] 
test-1 ansible_ssh_host=abc.def.ghi.jkl ansible_ssh_port=1212 

[test2] 
test2-1 ansible_ssh_host=abc.def.ghi.mno ansible_ssh_port=1212 

[test3] 
test3-1 ansible_ssh_host=abc.def.ghi.pqr ansible_ssh_port=1212 
test3-2 ansible_ssh_host=abc.def.ghi.stu ansible_ssh_port=1212 

[all:children] 
test1 
test2 
test3 

भूमिका मैं निम्नलिखित फैशन में भूमिका तक पहुँचने की कोशिश की है

& &

{{ hostvars.test1.ansible_ssh_host }} 

मैं test1 अनुभाग में ansible_ssh_host तक पहुंचने का प्रयास कर रहा हूं।

त्रुटि

fatal: [localhost]: FAILED! => {"failed": true, "msg": "'ansible.vars.hostvars.HostVars object' has no attribute 'ansible'"} 

उत्तर

15

आप सही रास्ते के बारे में hostvars पर हैं।
यह magic variable अन्य होस्टों के बारे में जानकारी तक पहुंचने के लिए उपयोग किया जाता है।

hostvars सूची के रूप में इन्वेंट्री होस्टनाम के साथ हैश है।
प्रत्येक मेजबान के क्षेत्र तक पहुंचने के लिए, 2.0 के बाद से ansible_host के पक्ष में hostvars['test-1'], hostvars['test2-1'], आदि

ansible_ssh_host है deprecated का उपयोग करें।

{{ hostvars['your_host_group'].ansible_host }} 
+0

spaciba- मैंने उस वाक्यविन्यास की कोशिश की लेकिन मुझे लगता है कि यह मेरी तरफ एक टाइपो की वजह से काम नहीं कर रहा था –

1

आप होना चाहिए:
तो आप सबसे पहले "_ssh" सूची मेजबान तर्कों से ("ansible_port" यानी बन "ansible_user" करने के लिए, "ansible_host", और) को हटाने चाहिए तो आपका भूमिका में इसके साथ फोन सीधे

ansible_ssh_host 

या आप hostvars के माध्यम से जा सकते हैं magic variableinventory_hostname

का उपयोग करके मेजबान सचमुच निर्दिष्ट किए बिना ही चर नाम उपयोग करने में सक्षम
संबंधित मुद्दे