読者です 読者をやめる 読者になる 読者になる

Goldstine研究所

mosuke5's tech blog

Ansible、コマンド実行結果を"ok"にする(冪等性を保つ方法)

Ansible インフラ サーバ

Ansibleでソースコードインストールする際とか
すでにインストールされているかのチェックなどで、
シェルコマンドを実行してその結果で判断したい時がある。

ぼくがよくやる例では以下とか。

- name: check httpd installed
  command: which httpd
  ignore_errors: true

なんですが...
こうやってしまうと、仮に既にインストールされていて、正常なときでも"changed"と表示されてしまう。
これでは、本当にchangedなものなのか、わからなくなってくる。

これを解決するのにchaged_whenを使うといい。

- name: check httpd installed
  command: which httpd
  ignore_errors: true
  changed_when: false

こうするとコマンドが成功した際には"ok"が表示される。

これで、何も変化がないときにはokとskippingしかでないから、
誰がみても結果がわかりやすいですね!

秘伝のタレ回避!