2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ansible Blockinfile の tips

Last updated at Posted at 2019-08-20

blockinfile を使う場面で

「blockinfile って便利なんだけどファイルの後ろへ順次追加していきたいだけ」って事ありますよね。

  • 単一行だけどどんどん追加していきたい(/etc/hostsなど
  • 出来れば登録した人とかわかると嬉しい
  • 時と場合によっては複数行を扱いたい

って場面があるかと思います。

Blockinfile の動きとしては
「定義されているBEGIN〜ENDまでをチェックして無ければ追加、存在すれば書き換え」となります。

という事は、こんな風に記述すると

blockinfile
  task:
    - blockinfile:
        path: /etc/hosts
        backup: yes
        insertbefore: EOF
        marker_begin: "BEGIN {{ HOST_NAME }}"
        marker_end: "END {{ HOST_NAME }}"
        marker: "# {mark} ANSIBLE basic setup."
        block: |
          {{ HOST_IP }}    {{ HOST_NAME }}
/etc/hosts
# BEGIN hogehoge ANSIBLE basic setup.
192.168.0.1    hogehoge
# END hogehoge ANSIBLE basic setup.

と出てくれるので

  • 同じホスト名なら更新
  • 違うホスト名なら自動で追加
    と言う動きをしてくれます

Ansible AWX を使った場合

以下のような書き方をすると実行した人と日時が記録されます。

blockinfile
  gather_facts: yes
  task:
    - blockinfile:
        path: /etc/hosts
        backup: yes
        insertbefore: EOF
        marker_begin: "BEGIN {{ HOST_NAME }}"
        marker_end: "END {{ HOST_NAME }}"
        marker: "# {mark} ANSIBLE basic setup."
        block: |
          # {{ tower_user_name }} {{ ansible_date_time.iso8601 }}
          {{ HOST_IP }}    {{ HOST_NAME }}

【結果】

/etc/hosts
# BEGIN hogehoge ANSIBLE basic setup.
# nakacya 2019-08-20T01:56:37Z
192.168.0.1    hogehoge
# END hogehoge ANSIBLE basic setup.

blockinfile の扱いで2時間ほど悩んだので Tips として残しておきます。
案外書かれてない事項なので

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?