02 Feb 2015, 20:10

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

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しかでないから、
誰がみても結果がわかりやすいですね!

秘伝のタレ回避!

関連する記事はこちら
  • Ansible, sudoパスワード要求を忘れただけでめんどくなる (2014/11/28)
  • Ansible、コマンドでワイルドカードを使うときの注意 (2014/11/18)
  • Ansible、ソースインストールする際のPalybookの書き方 (2014/11/16)
  • 【VPS1台でインフラ勉強】多段SSH設定(おまけ) (2014/11/09)
  • AnsibleのTerraform moduleを考察してみる (2019/03/25)
  • comments powered by Disqus
    このエントリーをはてなブックマークに追加