(Photo by:Juan Lupión)
Ansibleを利用されている方、これからAnsibleの利用を検討されている方は、ChefやPuppetといった類似の構成管理ツールを利用した事がある、そこからの乗り換えを考えている方も多いと思います。
ここでは他類似ツールと比較する形でAnsibleを評価していきます。
使いやすさ、シンプルさ、管理し易さ
Ansibleは設定ファイルがYAMLで記述でき、特定プログラミング言語に依存せずに利用できるため、とても使いやすいツールになっています。
利用に際してリモート側にインストールする必要がないため(エージェントレス)、ホスト側だけで利用できる手軽さがあります。
Ansibleはホスト側からリモート側の操作を行うPush型です。そのためログもホスト側に集約されるため、障害解析のためリモート側を個別にみる必要が少なく、基本的にはホスト側の1台を管理すれば良い管理しやすい設計になっています。
リモート側にエージェント経由や、ポートを別途開いて接続するのではなく、SSHを使って接続する設計です。SSHを利用している点がセキュリティ、使いやすさ、分かりやすさで高く評価されています。
スケーラビリティ・速度
オプションのforks(http://docs.ansible.com/ansible/intro_configuration.html#forks)を指定するとリモート実行の平行稼働数を指定できます。デフォルトでは5です。管理サーバーのネットワークとCPUとプロセスの状況に合わせて50でも500でも増やす事ができます。
AnsibleをPush型からPull型にするansible-pull(http://docs.ansible.com/ansible/playbooks_intro.html#ansible-pull)があります。これを使うと「管理ホストが各ノードを制御する設計」から、「各ノード(リモート先)が定期的にplaybookを参照して実行」する設計になります。そのため管理ホストがスケーラビリティ確保のボトルネックになりません。
実行速度については公式のドキュメントにまとめられています。主にSSH自体の高速化、ネットワークに関する高速化です。
・http://www.ansible.com/blog/ansible-performance-tuning
・http://docs.ansible.com/ansible/playbooks_acceleration.html
エラーハンドリング
Ansibleはタスク単位、playbook単位でのエラーハンドリングの仕組みが備わっています。ただし、冗長化もかねたAnsible自体を複数の環境で実行する仕組みは備わっていません。
そのため例えばAnsible管理ホストがいきなりシャットダウンした、プロセスが落ちた、電源が落ちた等への対処をする場合は別途コントローラー・スケジューラーからAnsible管理ホストを制御する必要があります。
コントローラー・スケジューラー
AnsibleはリモートにSSHで接続してコマンドを実行し、そのエラーハンドリングを行うツールです。
そのため台数が多い大規模なプロビジョニングを行う場合はAnsibleを管理するスケジューラーまたはコントローラーでAnsibleプロセス監視、エラー時の再実行制御などを行う必要があります。
Ansibleを導入の手間なく堅牢に運用したい場合は、Ansible社が開発・有償で提供しているAnsible Tower(http://www.ansible.com/tower)を検討します。
Ansible Towerにはスケジューラーやログ管理などのコントローラーとしての機能が含まれており、専門知識がなくてもWeb上で操作ができます。
メンテナンスコスト・バージョンアップの保守コスト
(Photo by:Loughborough University Library)
構成管理ツールなどインフラに関わる活発なオープンソースで良くあるのが、今まで動いていたものがバージョンアップで動かなくなる事です。
Ansibleでは本体が動かなくなることが少なく、その代わりに多数あるモジュールで動かなくなる事が若干あるようです。
Ansibleの不具合と思われる挙動に遭遇した場合はStackOverFlowのAnsibleページ(http://stackoverflow.com/questions/tagged/ansible)内から該当する現象を探して回避する、AnsibleのGitHubにあるバグレポート(https://github.com/ansible/ansible/labels/bug_report)から探す、あるいは相談する報告するなどの対応が求められます。
ライセンス・料金
Ansible本体のライセンスはGPL v3です。インストーラーを利用し配布されているパッケージを利用する分には制約を受けませんが、ソースコードに手を加えAnsibleを含んだツールやプロダクト販売する場合には注意が必要です。
Ansible社が提供している有償プロダクトであるAnsible Tower(http://www.ansible.com/tower)の利用、有償サポートを受ける場合に料金が発生します。コンサルティングやトレーニングもAnsible社が直接行っています。興味のある方はAnsibleの料金ページ(http://www.ansible.com/pricing)をご確認ください。
そしてお約束ですが、日本にはAnsible社のオフィスおよび代理店がないようです。そのためAnsibleを良く理解している企業であれば有償サポートを活用できると思われますが、ユーザー企業など技術的に理解している訳ではない場合、いきなり全面導入するのは難しいかも知れません。
全体を通しての評価
Pull型でSSHを軸とした自由度が高い構成管理ツールです。シンプルなのであらゆる用途において使いやすい設計です。
懸念点としてはロールバックやフェイルセーフの設計を自前で行うのが必須になっている点です。この点は全ての構成管理ツールで共通ですので、serverspec(http://serverspec.org/)を使うなどして状態の確認が求められます。
利用者が多くないようですがAnsible Tower(http://www.ansible.com/tower)がAnsibleに特化したスケジューラーを提供し、オートスケーリングに対応しており便利です。ただ料金表(http://www.ansible.com/pricing)を見てちょっと高いと感じました。
今後のトレンド
以下画像はGoogleトレンドで見たAnsible、Puppet、Chefの推移です。ジャンルをソフトウェアに限定しています。
AnsibleがPuppetに迫ってきており、2014年後半からChefがシェアを減らしてきているのが分かります。Puppet は横ばいです。Ansibleの伸びに比例してChefがシェアを下げているように見えます。
ただ、AnsibleはPuppetやChefとは設計が異なります。Chef よりもAnsibleの方が楽にできる用途ではAnsibleが優先して利用されると思われますが、PuppetやChefを使う方が向いている用途には、置き換わることなく今のまま使われ続けると思われます。
本ブログは、Git / Subversionのクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
エンタープライズ向け Git / Subversion 導入や DevOps による開発の効率化を検討している法人様必見!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments