2014-04-10 7 views
24

की तरह एक सूची फ़ाइल के बाद:Ansible - प्रवेश सूची उर्फ ​​

[my_hosts] 
my_host ansible_ssh_host=123.123.123.123 
my_host2 ansible_ssh_host=234.234.234.234 

मैं अपने टेम्पलेट्स में कुछ डिबग जानकारी इकट्ठा करना चाहते हैं।

  • मैं प्लेबुक/टेम्पलेट में उपनाम चर कैसे प्राप्त करूं? यानी .:

    debug: msg=Myhost is {{ ansible_host_alias }} 
    # Myhost is my_host 
    # Myhost is myhost2 
    

मैं ansible -m setup my_host उपयोग करते हुए तथ्यों को इकट्ठा करने की कोशिश की। चर ansible_hostname, HOSTNAME और HOST में मशीन का होस्टनाम, यानी echo $HOSTNAME है जो मेरे उत्तरदायी उपनाम से अलग है।

+1

पता है कि '' ansible_ssh_host' v2.0 में ansible_host' के पक्ष में पदावनत किया गया है हो सकता है। ([डॉक्स] (http://docs.ansible.com/ansible/intro_inventory.html#hosts-and-groups))। इसी तरह 'ansible_ssh_user' और 'ansible_ssh_port'' ansible_user' और' ansible_port' बनने के लिए। उत्तर के पुराने संस्करणों में चेतावनी के बिना इन छोटे चर को अनदेखा किया जाता है। – Kyr

उत्तर

47

चर रहा searchin गया था के लिए सुविधा में एक साथ बनाया गया है जी: inventory_hostname

Ansible प्रलेखन के बारे में inventory_hostname और inventory_hostname_short अध्याय Magic Variables, and How To Access Information About Other Hosts से पाया जाता है।

मूल प्रश्न: https://groups.google.com/forum/#!topic/ansible-project/Oa5YXjHecIw

+0

बहुत बढ़िया लगता है ... मुझे वह याद आया। – Rico

12

तुम बस बस {{ ansible_ssh_host }} उदाहरण के लिए उपयोग कर सकते हैं:

इन्वेंटरी:

[my_hosts] 
my_host ansible_ssh_host=127.0.0.1 my_host_alias=my_host 

प्लेबुक:

--- 
- name: My Good playbook 
    user: ubuntu 
    hosts: all 

    tasks: 
    - name: My message 
     debug: msg="Myhost is {{ ansible_ssh_host }}" 

    - name: My message bogus 
     debug: msg="My host alias is {{ my_host_alias }}" 

निष्पादन:

$ ansible-playbook -i inventory play.yml 

PLAY [My Good playbook] ******************************************************* 

GATHERING FACTS *************************************************************** 
ok: [my_host] 

TASK: [My message] ************************************************************ 
ok: [my_host] => { 
    "msg": "Myhost is 127.0.0.1" 
} 

TASK: [My message bogus] ****************************************************** 
ok: [my_host] => { 
    "msg": "My host alias is my_host" 
} 

PLAY RECAP ******************************************************************** 
my_host     : ok=3 changed=0 unreachable=0 failed=0 
+0

धन्यवाद, लेकिन मैं उपनाम प्राप्त करना चाहता हूं (इसलिए आउटपुट 'my_host' होना चाहिए) और आईपी पता नहीं। पृष्ठभूमि है: मैं मौजूदा बुनियादी ढांचे को उत्तरदायी के साथ एकीकृत करने की कोशिश कर रहा हूं और मुझे केवल आईपी पते मिल गए हैं। कुछ कार्यों में मैं सर्वर (टेम्पलेट्स में आंकड़े लिखना) के बारे में जानकारी एकत्र कर रहा हूं और इसलिए मैं उपनाम को टेम्पलेट में रखना चाहता हूं – ProfHase85

+0

मेरे संपादन की जांच करें बस 'my_host_alias' चर – Rico

+0

का उपयोग करें धन्यवाद, इस समाधान के बारे में समस्या इसकी अनावश्यकता है: मैं उपनाम को दो बार परिभाषित कर रहा हूं (यही कारण है कि मैं जानना चाहता था कि उपनाम के लिए एक अंतर्निहित उत्तर परिवर्तनीय है, लेकिन ऐसी कोई चीज़ नहीं है) – ProfHase85