02 Feb 2015, 20:10

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

最近は、Ansibleを使うことが非常に増えてきた。使って運用を回していくと、大したことではないのだが運用上少し困るようなことも多く出てきた。そのうちの一つである、アウトプットの結果の表示についてのチップスを紹介する。

課題

Ansibleでソースコードインストールするのを実装する際に、インストール前に事前にそのソフトウエアがインストールされているか確認することがある。 例えば、httpdをソースコードインストールする前に、そもそもhttpdが入っているかのチェックで which httpdと実行して判断したり。

Playbookであらわすと以下のようになる。

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

しかしこのまま運用に回すと困るポイントがでてきた。 既にインストールされていて、正常なときでも”changed“と表示されてしまうという問題である。
これでは、本当にchangedなものなのか、わからなくなってくる。

解決策

こういった問題を解決するのにはchaged_whenを使うといい。以下はPlaybookのサンプルだ。

- 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)
  • Kubernetes上のリソースをAnsibleで管理する (2019/08/21)
  • comments powered by Disqus
    このエントリーをはてなブックマークに追加