...pudding - diary


2018-12-11

_ [Software] Ansible の "lineinfile" 暗黙の初期値 state=present でなるほど冪等性と思った

Ansible でファイルの中身を編集するモジュール lineinfile がある。

使い方の例として「設定ファイルに一行パラメータを追加するときに使うんだよ」と教わった。

たとえば /etc/sudoers に一行追加しよう。

$ ansible hostname -i inventory -m lineinfile -a 'path=/etc/sudoers line="user01 ALL=(ALL) ALL"'

これで line で指定した内容が path で指定したファイルに 1行追加されるんですよ。

で、再実行するじゃないですか。何も起きないんですよ。

なんで?

と思ったんですけど説明書を読んでようやくわかりました。

lineinfile - Manage lines in text files — Ansible Documentation

これはファイルに行を追加する命令じゃないんだ。line で指定した行が必ず存在するようにする命令なんだ。場所を指定しなければファイルの末尾が使われるんだ。

暗黙の初期値 state=present というのを読んでようやく理解した。必須パラメータじゃないから書かなくても動くんだけど。明示的に指定されるとそういう役目かとよくわかる。なるほど冪等性。


2018年
12月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Twitter : @moriya_jp