सवाल उत्तर: गंतव्य फ़ाइल मौजूद नहीं होने पर केवल तभी प्रतिलिपि बनाएं


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

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

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

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


44
2017-07-05 11:10


मूल




जवाब:


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

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

54
2017-07-05 11:54



बहुत अच्छे। बहुत धन्यवाद! ) - Slava Fomin II


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

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

वहाँ से उत्तर टेम्पलेट मॉड्यूल डॉक्स:

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

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


27
2017-11-26 17:00



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


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

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   

10
2018-01-16 11:17



मैं यह जवाब पसंद करता हूं क्योंकि यह इसके कार्यों का नाम है :) - Asfand Qazi


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


-2
2017-09-10 12:09