今回はAnsibleでもChefでも同じなのですが、冪等性(べきとうせい)についてブログします。
■冪等性って何?
wikiではこんなことが書いてありました。
数学において、冪等性(べきとうせい、英: idempotence 「巾等性」とも書くが読み方は同じ)は
大雑把に言って、ある操作を1回行っても複数回行っても結果が同じであることをいう概念である。
まれに等冪(とうべき)とも。抽象代数学、特に射影(projector)や閉包(closure)演算子に見られる
特徴である。”idempotence” という単語はラテン語の “idem”(同じ=same)と”potere”(冪=power)
から来ている。
つまり
「Ansibleのplaybookを何回も実行しても
結果が同じであること」
である。
■もっと詳しく言うと
基本的にAnsibleは定義に合わせたミドルウェアなどがサーバにインストールされ、サーバの状態が変更され、 Playbookを変更しないのであれば、何回実行してもサーバの状態が変更されないことが普通。
なので冪等性を保たないPlaybookは実行時にサーバの状態が変わってしまいます。
→ひえええ
■こんなモジュールは使わない
・commandモジュール
1 2 3 4 5 |
--- - hosts: all tasks: - name: nginx install command: "yum -y install nginx" |
このcommandモジュールなのですが、カバーできない最終手段としてこいつがあります。しかも実行すると必ずchangedを返してしまうため危険!上記の場合だとNginxをインストールしたいのであれば、yumモジュールを使って内部に対象がインストールされているか確認し、インストールされていればokを出してくれて、インストールしたいのであればchangedを返します。なのでこっちのほうが断然いいでしょう。
■まとめ
もちろん冪等性を考えるのであればtagを指定して実行するのもアカンということになります。冪等性を考えてplaybookを作っているのであればミスなどなく、tag指定なんて必要ないはず。。。
参考
https://ja.wikipedia.org/wiki/%E5%86%AA%E7%AD%89
http://dev.classmethod.jp/server-side/ansible/ansible_playbook_with_idempotence/
0件のコメント