私はansibleの初心者ですが、blockinfile関数を正常に使用できました。しかし、マーカーが挿入されないようにする方法がわかりません。ドキュメントを読みましたが、説明がありませんでした。
これは、blockinfileが書き込むすべてのファイルに表示されます。
# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK
私はansibleの初心者ですが、blockinfile関数を正常に使用できました。しかし、マーカーが挿入されないようにする方法がわかりません。ドキュメントを読みましたが、説明がありませんでした。
これは、blockinfileが書き込むすべてのファイルに表示されます。
# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK
回答:
元のblockinfile
モジュールをgithubで確認しました-Ansible 2以前は、Ansibleにバンドルされていませんでした。マーカーは実際にブロックを識別するために使用されています:
それは意図された動作のようです。ブロックマーカーで囲まれたすべての行を指定されたコンテンツに置き換えます。
つまり、マーカーを削除blockinfile
すると、はブロックを識別できなくなり、プレイブックを実行するたびにモジュールがファイルにブロックを追加することになります。
したがって、書き込まれたブロックの前後のマーカーはモジュールの要件であり、削除することはできません。
これが二度と実行されない1回限りのプレイブックである場合は、後でオプションを指定してlineinfile
モジュールを実行できstate: absent
ます。
古い答え:
ドキュメントによると、blockinfile
モジュールにはmarker
オプションがあります。
空の文字列またはFalseに設定しようとしましたか?
blockinfile:
dest: /var/www/html/index.html
marker: ""
または
blockinfile:
dest: /var/www/html/index.html
marker: False
私はこのようなことをしました...
- 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: '^$'
結局のところ、次のコードを使用して複数の行を作成することにしました。
/programming/24334115/ansible-lineinfile-for-several-lines
ありがとう@udondan