2015-03-13 6 views
9

मैं एक प्लेबुक परिभाषित करना चाहता हूं जो मेरे मेजबानों के बारे में तथ्यों को स्थापित करता है जिसका उपयोग अन्य नाटकों में किया जा सकता है। Set_fact मॉड्यूल यह करने में सक्षम होने का दावा करता है ... http://docs.ansible.com/set_fact_module.html - हालांकि यह काम नहीं कर रहा है ... मैं जो तथ्य परिभाषित करता हूं वह प्ले-बुक के एक भाग के भीतर set_fact पर कॉल के बाद उपलब्ध होता है - मैं तब होने की उम्मीद करता हूं उत्तरदायी सभी-एम सेटअप का उपयोग करने में सक्षम और प्रत्येक मेजबान के लिए एकत्रित तथ्यों के भीतर कहीं भी परिभाषित तथ्य देखें ...लगातार तथ्यों को परिभाषित करने के लिए ansible set_fact मॉड्यूल का उपयोग कर?

मैंने set_fact मॉड्यूल के लिए कोड को देखने का प्रयास किया - लेकिन मुझे लगता है कि सब कुछ दस्तावेज स्ट्रिंग है ... https://github.com/ansible/ansible-modules-core/blob/19b328c4df2157b6c0191e9144236643ce2be890/utilities/logic/set_fact.py

+0

अच्छा प्रश्न और मुझे नहीं पता था 'set_fact' _should_ काम लगातार।मैंने वास्तविक कोड खोजने की कोशिश की, केवल एक संदर्भ मिला कि 'set_fact' एक एक्शन प्लगइन है लेकिन अब एक्शन प्लगइन्स को खोजने में असमर्थ था कि सबकुछ 3 रेपो में विभाजित है। मैंने पाया [यह धागा मेलिंग सूची से] [http://grokbase.com/p/gg/ansible-devel/149rhwqtxy/persistent-set-fact) जो एक अनियंत्रित 'निरंतर' पैरामीटर का उल्लेख करता है। शायद उसके साथ खेलें। – udondan

उत्तर

2

सबसे पहले, set_fact मॉड्यूल केवल रन के दौरान उपलब्ध तथ्यों को सेट करता है।

--Static--

  • निम्न में से एक में उन्हें परिभाषित: लगातार तथ्यों के लिए, आप या तो करने की आवश्यकता होगी
    • वार्स/
    • group_vars/
    • host_vars/

--Dynamic--

बाद मैं आमतौर पर, ऐसा करने के लिए चुनते हैं क्या के रूप में यह काफी सरल है स्थापित करने के लिए है, और तथ्यों हमेशा सभी मेजबानों पर उपलब्ध हैं, भले ही आप की तरह कुछ कर रहे हैं:

  • हो रही सभी तथ्यों सभी कॉन्फ़िगरेशन फ़ाइलों को उत्पन्न करने के लिए एक नागोस होस्ट से कनेक्ट होने पर सभी होस्ट्स के लिए।
+0

वास्तव में मुझे जवाब जानने के बाद अद्यतन करने के लिए इस प्रश्न पर वापस आना चाहिए था (set_fact मॉड्यूल के लिए प्रलेखन नए लोगों को भ्रमित कर रहा है - कम से कम यह मुझे भ्रमित कर रहा था जब मैं पहली बार जवाब के साथ शुरू कर रहा था)। Set_fact के माध्यम से परिभाषित चर केवल एक ही प्लेबुक run_ के साथ नाटकों के बीच जीवित रहते हैं। – Ben

+0

सहमत हुए। दस्तावेज़ पहले भ्रमित हो सकते हैं। – senorsmile

+1

set_fact अब चर को कैश करने के लिए उपयोग किया जा सकता है और निष्पादन के बीच उन्हें जारी रख सकता है। Http://docs.ansible.com/ansible/latest/playbooks_variables.html#fact-caching और http://docs.ansible.com/ansible/latest/set_fact_module.html देखें – Petro026

1

आप किस उत्तर का उपयोग कर रहे हैं? संस्करण 1.8 के अनुसार, एक अंतर्निहित fact caching capability है, लेकिन यह डिफ़ॉल्ट रूप से अक्षम है। आपको इसे अपनी ansible.cfg फ़ाइल में सक्षम करने की आवश्यकता होगी, और आपको वास्तव में तथ्यों को कैश करने के बाद से एक रेडिस सर्वर चलाना होगा।

+0

मैं उत्तरदायी 1.8.4 का उपयोग कर रहा हूं। मैं set_fact मॉड्यूल के दस्तावेज़ीकरण को काफी अलग समझ गया ... मैंने सोचा कि यह कुछ और कर रहा है जैसे होस्ट पर कुछ राज्य बनाने के लिए कार्य को निष्पादित करने के लिए कार्य को निष्पादित करना - कुछ/etc/तथ्यों के भीतर फ़ाइल बनाने या अपडेट करने जैसा कुछ .d/जो set_fact को पारित पैरामीटर को कैप्चर करेगा। Thats 'इन चरों के बीच नाटकों के बीच जीवित रहेंगे' की प्राकृतिक व्याख्या की तरह लगता है ... – Ben

+0

मैं वास्तव में दूरस्थ नोड्स से तथ्यों का उपयोग करने की कोशिश नहीं कर रहा हूं - बल्कि मैं राज्य के एक टुकड़े को पकड़ने और जमा करने की कोशिश कर रहा हूं एक होस्ट (इसकी एसएसएच होस्ट सार्वजनिक कुंजी) ताकि मैं पता लगा सकूं कि क्या परिवर्तन और यदि यह है, तो मैं एक त्रुटि उत्पन्न करना चाहता हूं। मेरा लक्ष्य वर्कफ़्लो को परिभाषित करना है ताकि मैं आसानी से अपने बुनियादी ढांचे में जोड़े गए नोड्स से सभी एसएसएच होस्ट सार्वजनिक कुंजी एकत्र कर सकूं, उन पर सत्यापित और साइन आउट कर सकूं, और फिर आसानी से पता लगा सकता हूं कि उनमें से कोई भी केंद्रीय स्वीकृत मूल्य – Ben

+0

से बदल जाएगा इसके बारे में थोड़ा अलग - (1) फ़ाइल 'लुकअप' तंत्र (2) का उपयोग कर एक चर में नियंत्रण मशीन से ansible_hostname के लिए रिमोट होस्ट की सार्वजनिक होस्टकी की मान्य प्रति का मान प्राप्त करें/2/ssh/ssh_host_rsa_key शैल का उपयोग करके .pub: बिल्ली और रजिस्टर (3) त्रुटि उत्पन्न करें अगर स्पष्ट रूप से ओवरराइड सहायता के लिए धन्यवाद। यदि यह खराब दृष्टिकोण की तरह लगता है तो किसी भी सुझाव की सराहना करेंगे। – Ben

0

एक दूरस्थ रूप से प्रबंधित प्रणाली एक /etc/ansible/facts.d निर्देशिका, इस निर्देशिका .fact में समाप्त होने में किसी भी फाइल है, JSON, INI, या निष्पादन योग्य फ़ाइलों JSON लौटने हो सकता है, और इन कर सकते हैं 1.3 के बाद से Ansible में स्थानीय तथ्यों की आपूर्ति। Fact_path play निर्देश का उपयोग करके एक वैकल्पिक निर्देशिका निर्दिष्ट की जा सकती है।

http://docs.ansible.com/ansible/playbooks_variables.html#local-facts-facts-d

संबंधित मुद्दे