2014-09-02 6 views
30

मैं उत्तरदायी प्लेबुक में yaml सरणी --extra-vars पर कैसे जा सकता हूं। उत्तरदायी दस्तावेज इसके वाक्यविन्यास की घोषणा नहीं करता है और न ही मैं इसे किसी भी इंटरनेट संसाधन पर पा सकता हूं।--extra-vars में पास सरणी - उत्तर

मेरा मतलब है अगर मैं एक प्लेबुक है:

--- 
    - hosts: {{hostName}} 
    - remote_user: admin 
    ... 

तब मैं

ansible-playbook DeployWar.yml --extra-vars="hostName=tomcat-webApp"

की तरह मेरे प्लेबुक बुलाना चाहिए लेकिन मैं दो सर्वर पर इस प्लेबुक चलाना चाहते हैं tomcat-webApp और tomcat-all कहते हैं, और मैं इसे बाहर की ओर से नियंत्रित करना चाहता हूं यानी --extra-vars का उपयोग करना। मैंने जो करने की कोशिश की है वह है:

ansible-playbook DeployWar.yml --extra-vars="hostName=[tomcat-webApp, tomcat-all]" 

ansible-playbook DeployWar.yml --extra-vars="hostName={tomcat-webApp, tomcat-all}" 

ansible-playbook DeployWar.yml --extra-vars="[{hostName: tomcat-webApp}, {hostName: tomcat-all}]" 

लेकिन सभी मामलों में प्लेबुक मेरी कॉल में एक वाक्यविन्यास त्रुटि घोषित करने में विफल रहता है। किसी भी मदद की सराहना की।

उत्तर

19

अपने पहले प्रश्न का उत्तर देने के लिए "मैं यमेल सरणी को Ansible playbook में --extra-vars कैसे पास कर सकता हूं।" आप json formatted string to extra-vars में पास कर सकते हैं।

- hosts: all 
    gather_facts: no 
    tasks: 
    - debug: var=test_list 

और कैसे test_list में पारित करने के लिए ansible-प्लेबुक के लिए:

ansible-playbook -c local -i localhost, test.yml --extra-vars='{"test_list": [1,2,3]}' 

हालांकि आप मेजबान मैं के लिए Ansible के तंत्र देखने की अनुशंसा के लिए एक चर का उपयोग कर सकते

यहाँ एक उदाहरण नाटक है मेजबान प्रबंधन inventory--limit विकल्प के साथ संयोजन में है।

+2

जब भी मैं JSON के साथ काम कर रहा हूँ, चाहे अतिरिक्त वार्स में या कहीं और मैं http://jsonlint.com के उपयोग को खोजने एक lifesaver होने के लिए। {Test_list: [1,2,3]} को उस साइट पर पेस्ट करके आप जल्दी से सत्यापित कर सकते हैं कि आपका JSON वाक्य रचनात्मक रूप से सही है। यह विशेष रूप से उपयोगी होता है जब उत्तर में एकाधिक चर गुजरते हैं या जब आपके पास कोई अन्य जटिल JSON है जिसके साथ आप काम कर रहे हैं। –

+0

यह उत्तर वास्तव में पुराना है - '--extra-vars = '{test_list: [1,2,3]}' 'का उपयोग करने से त्रुटि होगी' त्रुटि: डबल कोट्स में संलग्न संपत्ति का नाम अपेक्षित: पंक्ति 1 कॉलम 2 (चार 1) '(कम से कम 1.9.4 के साथ, जिसका मैं उपयोग कर रहा हूं), क्योंकि यह वैध JSON नहीं है। सही संस्करण '--extra-vars =' {"test_list" होगा: [1,2,3]} '' – iquito

+0

अतिरिक्त-वर्क्स प्रारूपण को अपडेट किया गया, धन्यवाद! – jarv

5

उत्तर 1.3 के अनुसार, अतिरिक्त वार्स को या तो कमांड लाइन पर या फ़ाइल में YAML के रूप में स्वरूपित किया जा सकता है। the Ansible documentation titled Passing Variables On The Command Line देखें।

लिंक से

: --extra-वार्स "@ some_file.json"

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