किसी भिन्न होस्ट के होस्ट चर को ऐक्सेसिबल के साथ कैसे एक्सेस करें?


45

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

जवाबों:


87

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

{{ 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 के रूप में, एक तथ्य-कैशिंग विशेषता है जो अब उपलब्ध है। फैक्ट कैशिंग प्लेबुक रन के बीच तथ्यों को संग्रहीत करने के लिए एक रेडिस सर्वर पर निर्भर करता है। इसके सक्षम होने के साथ, एक प्लेबुक उन तथ्यों को संदर्भित कर सकती है जो किसी अन्य प्लेबुक द्वारा प्राप्त किए गए थे जो पहले चलाए गए थे। Ansible प्रलेखन का उदाहरण देता है:

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


2
क्या एक चर के रूप में साहचर्य सूचकांक निर्धारित करने का एक तरीका है? उदाहरण ansible localhost --extra-vars में "metamorphosis_ip = 172.16.3.73" -a "echo {{hostvars [{{metamorphosis_ip}}}] ['inv_domain]]}}"
corretge

ऊपर दिए गए उत्तर में जोड़ने के लिए सुनिश्चित करें कि आप यहां पर जवाबदेह FAQ का संदर्भ देते हैं: docs.ansible.com/ansible/faq.html जो विस्तार से चीजों को समझाता है, जैसे कि मेजबान के एक समूह पर लूप करना या एक विशिष्ट होस्ट प्राप्त करने के लिए एक चर सेट करना। एक समूह में।
einarc

खाली कार्य सूची वाले नोड से तथ्यों को लाने के विचार के लिए धन्यवाद।
पेड्ज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.