उत्तर: गंतव्य फ़ाइल मौजूद नहीं होने पर ही टेम्पलेट को कॉपी करें


47

मैं Ansible 1.6.6अपनी मशीन का प्रावधान करने के लिए उपयोग कर रहा हूं ।

मेरी प्लेबुक में एक टेम्प्लेट कार्य है जो जिनजा 2 टेम्पलेट से गंतव्य फ़ाइल बनाता है:

tasks:
    - template: src=somefile.j2 dest=/etc/somefile.conf

somefile.confयदि यह पहले से मौजूद है तो मैं प्रतिस्थापित नहीं करना चाहता । क्या यह संभव है Ansible के साथ? यदि हां, तो कैसे?

जवाबों:


61

आप स्टेट का उपयोग करके फ़ाइल के अस्तित्व की जांच कर सकते हैं, और फिर टेम्पलेट का उपयोग केवल तभी कर सकते हैं यदि फ़ाइल मौजूद नहीं है।

tasks:
  - stat: path=/etc/somefile.conf
    register: st
  - template: src=somefile.j2 dest=/etc/somefile.conf
    when: not st.stat.exists

42

आप बस टेम्पलेट मॉड्यूल के बल परम का उपयोग कर सकते हैं :

tasks:
    - template: src=somefile.j2 dest=/etc/somefile.conf force=no

या कार्य का नामकरण ;-)

tasks:
    - name: Create file from template if it doesn't exist already.
      template: 
        src: somefile.j2
        dest:/etc/somefile.conf
        force: no

से Ansible टेम्पलेट मॉड्यूल डॉक्स:

बल: डिफ़ॉल्ट हाँ है, जो स्रोत से भिन्न होने पर दूरस्थ फ़ाइल को बदल देगा। यदि नहीं, तो फ़ाइल केवल तभी स्थानांतरित की जाएगी जब गंतव्य मौजूद नहीं है।

अन्य उत्तर उपयोग करते हैं statक्योंकि बल पैरामीटर को लिखे जाने के बाद जोड़ा गया था।


2
मेरा उत्तर स्टेट का उपयोग करता है, क्योंकि प्रश्न / उत्तर के समय टेम्पलेट के लिए कोई बल तर्क नहीं दिया गया था
Teftin

10

आप पहले जांच सकते हैं कि गंतव्य फ़ाइल मौजूद है या नहीं और फिर उसके परिणाम के आधार पर निर्णय लें।

tasks:
  - name: Check that the somefile.conf exists
    stat:
      path: /etc/somefile.conf
    register: stat_result

  - name: Copy the template, if it doesnt exist already
    template:
      src: somefile.j2
      dest: /etc/somefile.conf
    when: stat_result.stat.exists == False   

1
मैं इस उत्तर को पसंद करता हूं क्योंकि यह नाम है इसके कार्य :)
असफंद काजी

-3

मेरे अनुसार, सबसे आसान समाधान टेम्पलेट मॉड्यूल से विशेषता "बल = नहीं" का उपयोग करना है

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