- shellモジュール、commandモジュールはとても便利といか力技でなんでもできるけれど、冪等性のチェックが行われずに、とくに気をつかわなければ常時実行されChangeとなってしまう
- たとえば参照系のものであれば別段問題はないけれど、書き込み系のコマンドを重ねがけするのはあまりよろしくない
- そういう場合は自前でチェックするセクションを作る
registerとwhenを組み合わせると良い
コマンドチェックするほうのセクション(Check install npm)
-
registerをつけることで、指定した値にそのセクションの実行結果をしまうことができる - 以下のようなサブオプションが格納される
- rc
- リターンコード
- stderr
- 標準エラー
- stdout
- 標準出力
- stdout_lines
- 改行ありの標準出力
- rc
-
changed_when: falseにより、このセクションが実行されてもOK扱いになる -
failed_when: falseにより、このセクションでどのような実行結果となってもエラーとはならない
コマンドインストールする方のセクション(Install npm)
-
whenで実行するか否かを指定できる - 今回は、npm_pathに格納された標準出力結果が、
/usr/bin/npmでなければ実行する - 一度目の実行では、whichの見つからなかったメッセージが入るので実行される
npmをインストールする例
- name: Check install npm
shell: |
/usr/bin/which npm
register: npm_path
changed_when: false
failed_when: false
- name: Install npm
shell: |
curl -sL https://rpm.nodesource.com/setup_14.x | bash -
args:
chdir: /tmp
when: npm_path.stdout != "/usr/bin/npm"