सवाल उत्तर के साथ एक अलग मेजबान के मेजबान चर का उपयोग कैसे करें?


आइए मान लें कि एक होस्ट है जो कुछ डेटा एकत्र करता है और यह एक समूह में है [collectors]। मेरे पास समूह में मेजबान भी हैं [reporters]। तो मैं पत्रकारों पर एक चर सेट करना चाहता हूँ groups['collectors'][0] आईपी ​​पता। लेकिन पत्रकारों की स्थापना के लिए प्लेबुक चालू नहीं है [collectors] समूह इस मेजबान के लिए तथ्यों को एकत्र नहीं किया जाता है। क्या आईपी पते को हार्डकोड करने का कोई तरीका नहीं है?


39
2017-10-21 08:05


मूल




जवाब:


आप इस तरह कुछ कर कर किसी भी सूची तथ्यों / चर का उपयोग कर सकते हैं:

{{ hostvars['foo.example.com']['ansible_eth0']['ipv4']['address'] }}

या, यदि आप किसी समूह में किसी इंडेक्स के माध्यम से ऐसा करना चाहते हैं:

{{ hostvars[groups['collectors'][0]]['ansible_eth0']['ipv4']['address'] }}

बड़ी चाल यह है कि आपको उन सभी होस्ट / समूहों के लिए तथ्यों को इकट्ठा करने की आवश्यकता है, जिनमें आप रुचि रखते हैं। इसलिए आप अपनी प्लेबुक को संशोधित करना चाहते हैं जो पत्रकार समूह के खिलाफ चलता है जिसमें नो-ऑप (डमी) कार्य लागू होता है कलेक्टर समूह के लिए। इससे संग्राहक मेजबानों के बारे में तथ्यों को इकट्ठा करने का उत्तर मिलेगा ताकि उन्हें संवाददाता समूह से पहुंचा जा सके। तो हो सकता है कि आप अपनी पत्रकार प्लेबुक के शीर्ष पर ऐसा कुछ जोड़ना चाहें:

- hosts: collectors
  name: Gather facts from collectors
  tasks: [ ]

खाली ब्रैकेट का मूल रूप से मतलब है कि कोई भी कार्य निष्पादित नहीं किया जाएगा, लेकिन यह कलेक्टरों के बारे में तथ्यों को इकट्ठा करने के लिए उत्तरदायी को मजबूर करेगा ताकि आप उन्हें अपने संवाददाताओं के खिलाफ चलने वाले कार्यों में संदर्भित कर सकें।

# 1 संपादित करें

यह मेरे लिए हुआ कि मुझे यह भी जिक्र करना चाहिए कि उत्तर के संस्करण 1.8 के रूप में, एक है तथ्य कैशिंग सुविधा जो अब उपलब्ध है। फैक्ट कैशिंग प्लेबुक रन के बीच तथ्यों को स्टोर करने के लिए एक रेडिस सर्वर पर निर्भर करता है। इसके साथ ही, एक प्लेबुक उन तथ्यों को संदर्भित कर सकती है जो पहले की गई किसी अन्य प्लेबुक द्वारा प्राप्त की गई थीं। उदाहरण उत्तरदायी दस्तावेज देता है:

उदाहरण के लिए, हजारों मेजबानों के साथ एक बहुत बड़ा बुनियादी ढांचा कल्पना कीजिए। रात को चलाने के लिए फैक्ट कैशिंग को कॉन्फ़िगर किया जा सकता है, लेकिन सर्वर के एक छोटे से सेट की कॉन्फ़िगरेशन पूरे दिन विज्ञापन-समय या समय-समय पर चल सकती है। तथ्य-कैशिंग सक्षम होने के साथ, संदर्भों और उनके बारे में जानकारी संदर्भित करने के लिए सभी सर्वरों को "हिट" करना आवश्यक नहीं होगा।


74
2017-10-23 21:37



एसोसिएटिव इंडेक्स को एक चर के रूप में सेट करने का कोई तरीका है? उदाहरण में उत्तरदायी लोकहोस्ट --extra-vars "metamorphosis_ip = 172.16.3.73" -a "echo {{hostvars [{{metamorphosis_ip}}] ['inv_domain']}}" - corretge
ऊपर दिए गए उत्तर में जोड़ने के लिए सुनिश्चित करें कि आप यहां उत्तरदायी अक्सर पूछे जाने वाले प्रश्नों का संदर्भ लें: docs.ansible.com/ansible/faq.html जो चीजों को विस्तार से बताता है, जैसे मेजबानों के समूह पर लूपिंग करना या समूह में एक विशिष्ट होस्ट प्राप्त करने के लिए एक चर सेट करना। - einarc
आप आदमी हो!!! - dsutherland
एक खाली कार्य सूची के साथ नोड से तथ्यों को लाने के विचार के लिए धन्यवाद। - pedz