2014-11-04 5 views
18

फ़ाइल में पंजीकृत वैरिएबल कैसे सहेज सकता है? मैं tutorial से ले लिया:उत्तरदायी - पंजीकृत चर को फ़ाइल

- hosts: web_servers 

    tasks: 

    - shell: /usr/bin/foo 
     register: foo_result 
     ignore_errors: True 

    - shell: /usr/bin/bar 
     when: foo_result.rc == 5 

मैं कैसे उदाहरण, एक फाइल करने के लिए foo_result चर की बचत होगी उत्तरदायी का उपयोग कर foo_result.log?

+0

मुझे आश्चर्य है कि क्या आपको बेहतर समाधान मिल रहा है क्योंकि मुझे कोई समाधान नहीं दिख रहा है जो अस्थायी फ़ाइल उत्पन्न करने का भी ख्याल रखता है। फ़ाइल नाम हार्डकोड करने के लिए एक समस्या होगी। – sorin

+0

आप अपने dest path में चर का उपयोग कर सकते हैं, उदाहरण के लिए: '-local_action: copy content = {{var}} dest =/path/to/{{var}}। लॉग', लेकिन मुझे बेहतर नहीं मिला समाधान अभी तक/या मुझे एक दूसरे की जरूरत नहीं थी। –

+2

[संभावित में एक फ़ाइल में परिवर्तनीय लिखें] का संभावित डुप्लिकेट (http://stackoverflow.com/questions/26638180/write-variable-to-a-file-in-ansible) – techraf

उत्तर

39

आप पैरामीटर content= के साथ copy मॉड्यूल का उपयोग कर सकते हैं।

मैं ठीक उसी जवाब यहाँ दिया: Write variable to a file in Ansible

आपके मामले में, ऐसा लगता है कि आप इस चर एक स्थानीय लॉगफ़ाइल को पत्र लिखा चाहते हैं, तो आप local_action अंकन के साथ संयोजित कर सकते हैं:

- local_action: copy content={{ foo_result }} dest=/path/to/destination/file 
+0

बिल्कुल वही जो मैं खोज रहा था। किसी भी तरह से मैं previouse सवाल भर में ठोकर नहीं था। –

+0

एनपी जवाब देने के लिए Thanx मैं वास्तव में प्रतिलिपि बनाने वाले कॉपी मॉड्यूल को ढूंढकर बहुत खुश था, इसलिए "मैं फ़ाइल में कैसे सहेज सकता हूं" प्रश्न मेरी आंखों को पकड़ने के लिए होते हैं :-) –

7

मैं Ansible 1.9.4 का उपयोग कर रहा है और यह है कि क्या मेरे लिए काम किया है -

- local_action: copy content="{{ foo_result.stdout }}" dest="/path/to/destination/file" 
2

एक स्थानीय कार्रवाई प्रत्येक दूरस्थ होस्ट के लिए एक बार चलेगा (समान्तर में)। यदि आप प्रति होस्ट एक अनन्य फ़ाइल चाहते हैं, तो फ़ाइल नाम के हिस्से के रूप में inventory_hostname डालना सुनिश्चित करें।

- local_action: copy content={{ foo_result }} dest=/path/to/destination/{{ inventory_hostname }}file 

आप सभी मेजबान की जानकारी के साथ एक एकल फाइल चाहते हैं, आप प्लेबुक जो केवल स्थानीय होस्ट के खिलाफ चलाता है के लिए एक दूसरी प्ले/भूमिका/कार्य जोड़ने के लिए होगा। फिर प्रत्येक मेजबान से वेरिएबल एक्सेस करें जहां पंजीकरण कमांड टेम्पलेट के अंदर चला गया है Access Other Hosts Variables DocsTemplate Module Docs

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