ansible blockinfile無効マーカー


11

私はansibleの初心者ですが、blockinfile関数を正常に使用できました。しかし、マーカーが挿入されないようにする方法がわかりません。ドキュメントを読みましたが、説明がありませんでした。

これは、blockinfileが書き込むすべてのファイルに表示されます。

# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK

回答:


14

元の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

1
上記の不完全な文について申し訳ありませんが、誰かがドアをノックし、私は走らなければなりませんでした。昨日これらのアイデアを試しました。マーカー: ""-ファイルの上部と下部に行を追加します。False:-ファイルの下部と上部にfalseという単語を追加するだけです。他のアイデアは?
Nik 2016

2
回答を更新しました。マーカーは実際にはgtheモジュール自体に必要であり、可能であっても、それらを削除したくないでしょう。詳細については、更新された回答を参照してください。
うどんだん2016

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: '^$'
  • マーカー「」はファイルに空白行を挿入します
  • lineinfileはそれらを(他のすべての空白行と共に)削除するので注意してください!!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.