2015-10-16 9 views
9

मैं अपने प्रोजेक्ट के खजाने में जमा हो जाती विन्यास फाइल के लिए खाका नहीं है। मुझे क्या करना चाहते हैं, दूरस्थ सर्वर पर है कि टेम्पलेट का उपयोग कर एक विन्यास फाइल बनाने के लिए परियोजना के बाद भंडार से क्लोन किया गया है Ansible के टेम्पलेट मॉड्यूल का उपयोग है।Ansible दूरस्थ टेम्पलेट्स

template मॉड्यूल के लिए प्रलेखन को देखते हुए ऐसा लगता है कि src विशेषता केवल स्थानीय फ़ाइलों का समर्थन करती है।

मैं मेरे परियोजना भंडार के भीतर इन परियोजना विशिष्ट टेम्पलेट्स रखने के लिए के लिए मेरे Ansible प्लेबुक के साथ विन्यास टेम्पलेट भंडारण के रूप में इसे और अधिक समझ में आता है बचना चाहते थे।

वहाँ टेम्पलेट मॉड्यूल है कि मैं इस्तेमाल कर सकते हैं के लिए एक विकल्प है?

+1

क्यों Ansible रूप में अच्छी तरह से अपने अन्य रेपो खींच करने की अनुमति नहीं? – ydaetskcoR

+0

उत्तरदायी क्लोन रिमोट सर्वर पर रेपो। एक बार यह क्लोन हो जाने के बाद, मुझे रेपो में मौजूद टेम्पलेट का उपयोग करके परिवर्तन करना होगा और अब रिमोट मशीन पर है। – trajan

+0

हाँ लेकिन क्यों अपने रेपो स्थानीय स्तर पर खींच Ansible नहीं लक्ष्य मेजबान पर यह क्लोनिंग के रूप में भी कर सकते हैं? फिर यह टेम्पलेट कार्यक्षमता का उपयोग कर सकता है। टेम्पलेट को मेजबान से वापस खींचने के लिए आपका विकल्प 'fetch' का उपयोग करना है, लेकिन यह मेरे लिए कम साफ विधि जैसा लगता है। – ydaetskcoR

उत्तर

13

आपके पास दो विकल्प यहाँ अगर अपने टेम्पलेट दूरस्थ होस्ट पर होने जा रहा है मिल गया है।

सबसे पहले, आप fetch मॉड्यूल का उपयोग कर सकते हैं जो रिमोट होस्ट पर रेपो क्लोन करने के बाद टेम्पलेट को वापस लाने के लिए copy मॉड्यूल के विपरीत काफी काम करता है।

- name : clone repo on remote hosts 
    git : 
    repo : {{ git_repo_src }} 
    dest : {{ git_repo_dest }} 

- name  : fetch template from single remote host 
    run_once : true 
    fetch : 
    src    : {{ template_path }}/{{ template_file }} 
    dest   : /tmp/{{ template_file }} 
    flat   : yes 
    fail_on_missing : yes 

- name  : template remote hosts 
    template : 
    src : /tmp/{{ template_file }} 
    dest : {{ templated_file_dest }} 
    owner : {{ templated_file_owner }} 
    group : {{ templated_file_group }} 
    mode : {{ templated_file_mode }} 

लाने कार्य run_once का उपयोग करता है यकीन है कि यह सिर्फ पहला मेजबान इसके खिलाफ बने रास्ते से टेम्पलेट को कॉपी परेशान करने के लिए:

इस के लिए एक प्लेबुक की तरह कुछ लग सकता है। मान लें कि इन सभी मेजबानों को आपके खेल में एक ही रेपो मिल रहा है, तो यह ठीक होना चाहिए, लेकिन अगर आपको यह सुनिश्चित करने की ज़रूरत है कि यह एक बहुत ही विशिष्ट मेजबान से कॉपी हो तो आप इसे delegate_to से जोड़ सकते हैं।

वैकल्पिक रूप से आप सिर्फ Ansible क्लोन रेपो स्थानीय स्तर पर है और यह सीधे का उपयोग की तरह कुछ के साथ कर सकते हैं:

- name : clone repo on remote hosts 
    git : 
    repo : {{ git_repo_src }} 
    dest : {{ git_repo_dest }} 

- name  : clone repo on Ansible host 
    hosts  : localhost 
    connection : local 
    git : 
    repo : {{ git_repo_src }} 
    dest : {{ git_repo_local_dest }} 

- name  : template remote hosts 
    template : 
    src : {{ template_local_src }} 
    dest : {{ templated_file_dest }} 
    owner : {{ templated_file_owner }} 
    group : {{ templated_file_group }} 
    mode : {{ templated_file_mode }} 
+0

बिल्कुल सही! पहला विकल्प मेरे उपयोग के मामले के लिए अच्छा काम करता है। – trajan