ansible blockinfile अक्षम मार्कर


11

मैं नए के लिए नया हूँ, हालांकि मैं सफलतापूर्वक blockinfile फ़ंक्शन का उपयोग करने में सक्षम था । हालाँकि मैं यह नहीं पता लगा सकता कि मार्करों को सम्मिलित होने से कैसे रोका जाए। मैंने प्रलेखन पढ़ा, लेकिन इसका वर्णन नहीं किया।

यह वही है जो ब्लॉकइनफाइल को लिखने वाली प्रत्येक फ़ाइल में दिखाई देता है।

# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK

जवाबों:


14

मैं github पर मूल blockinfileमॉड्यूल पर एक नजर था - 2 से पहले Ansible इसे Ansible के साथ बंडल नहीं किया गया था। यह पता चला है, मार्कर वास्तव में ब्लॉक की पहचान करने के लिए उपयोग किए जाते हैं :

यह इच्छित व्यवहार लगता है। यह निर्दिष्ट सामग्री के साथ ब्लॉक मार्करों से घिरी हुई सभी लाइनों को बदल देता है।

इसका मतलब है कि यदि आप मार्करों को हटाते हैं, blockinfileतो अब ब्लॉक को पहचानने में सक्षम नहीं होंगे, जिसके परिणामस्वरूप मॉड्यूल को प्लेबुक चलाने पर हर बार फाइल में ब्लॉक को जोड़ना होगा।

तो लिखित ब्लॉक के पहले और बाद के मार्कर मॉड्यूल की एक आवश्यकता है और इसे हटाया नहीं जा सकता है।

यदि यह एक बार की प्लेबुक है जिसे फिर कभी निष्पादित नहीं किया जाएगा तो आप बाद lineinfileमें state: absentविकल्प के साथ मॉड्यूल चला सकते हैं ।


पुराना उत्तर:

डॉक्स के अनुसार blockinfileमॉड्यूल में एक markerविकल्प है।

क्या आपने इसे एक रिक्त स्ट्रिंग या गलत पर सेट करने का प्रयास किया?

blockinfile:
    dest: /var/www/html/index.html
    marker: ""

या

blockinfile:
    dest: /var/www/html/index.html
    marker: False

1
ऊपर दिए अधूरे बयान के लिए खेद है, किसी ने दरवाजा खटखटाया और मुझे भागना पड़ा। मैंने कल इन विचारों को आजमाया। मार्कर: "" - फ़ाइल के ऊपर और नीचे एक पंक्ति जोड़ता है। गलत: - बस फ़ाइल के नीचे और ऊपर गलत शब्द जोड़ता है। कोई अन्य विचार?
निक

2
मैंने अपना उत्तर अपडेट कर दिया। मार्कर वास्तव में gthe मॉड्यूल द्वारा आवश्यक हैं और यहां तक ​​कि अगर आप कर सकते हैं, तो आप शायद उन्हें निकालना नहीं चाहते हैं। विवरण के लिए अद्यतन उत्तर देखें।
udondan

0

मैंने कुछ इस तरह किया ...

- name: Insert someline in somefile.sh
    blockinfile:
      path: /usr/share/somefile.sh
      block: -sometext
      insertafter: '-XX:originaltext'
      marker: ""
      backup: yes


 - name: Remove blank lines blockinfile put in
    lineinfile :
     path: /usr/share/somefile.sh
     state: absent
     regexp: '^$'
  • मार्कर "" फ़ाइल में रिक्त लाइनें सम्मिलित करेगा
  • लाइनइनफाइल उन्हें हटा देगा (अन्य सभी रिक्त लाइनों के साथ) इसलिए सावधान रहें !!

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