AnsibleやChefやPuppetは,「構成管理ツール」(Configuration Management)の代表的な技術として知られています。
構成管理ツールとは,複数のサーバーに対してアプリケーションを一括でデプロイしたり,構成を流し込んだり,管理したりするツールです。
では,それらの代表的なツールとして知られているAnsible / Chef / Puppetにはどのような違いがあるのでしょうか。
そして構成管理を自動化するには,どれがベストでしょうか。
環境に応じた選択が必要
当然,これが絶対的に優位というものは言えませんが,幾つかの判断材料をこの記事では列挙してみたいと思います。
まずは,以下の表をご覧ください。
Ansible | Chef | Puppet | |
---|---|---|---|
可用性 | 高 | 高 | 高 |
セットアップの簡易さ | 簡単 | やや難 | やや難 |
管理性 | 簡単 | やや難 | 難 |
スケーラビリティ | 高 | 高 | 高 |
言語 | YAML | DSL(Ruby) | DSL(PuppetDSL) |
相互運用性 | 高 | 高 | 高 |
価格(100ノード)参考値 | 110万 | 150万 | 120-220万 |
こうしてみると,Ansibleに優位性があるように感じる方もおられるかもしれませんが,それぞれの項目をさらに深く掘り下げてみたいと思います。
AnsibleとChefとPuppetの可用性を比較
基本的な可用性について,AnsibleとChefとPuppetを比較してみましょう。
どれも,複数のサーバーやインスタンスで構成されているため,高可用性があるといえるでしょう。もしマスターとなっているサーバーがダウンしたなら,別のサーバーがマスターとなって稼働します。
Ansibleの可用性
プライマリーインスタンスと呼ばれる単一のアクティブノードで動作します。もしプライマリーがダウンした場合,セカンダリ―インスタンスがマスターとしてアクティブになります
Chefの可用性
もしプライマリーのサーバーがダウンしたら,バックアップサーバーがプライマリーサーバーに取って代わります。
Puppetの可用性
マルチマスター構成です。もしアクティブなマスターがダウンしたら,他のマスターが補います。
AnsibleとChefとPuppetのセットアップの簡易さを比較
セットアップ時に係る作業量や容易さというのも比べてみたいと思います。
Ansibleのセットアップの簡易さ
Ansibleの特徴は,クライアントにエージェントをインストールする必要がないという事です。SSH接続を利用してクライアントやノードにログインできます。それで,クライアントの設定が必要ないという点で非常に簡単にセットアップできます。
Chefのセットアップの簡易さ
Chefはマスターとエージェントによって構成されています。Chefサーバーがマスターマシンで稼働し,それぞれのクライアント上ではエージェントをインストールされます。それで,簡単に導入できるという感じではありません。
Puppetのセットアップの簡易さ
Puppetもマスターとエージェントによって構成されています。導入の簡易さという点では,Chefと変わりません。
AnsibleとChefとPuppetの管理性を比較
管理性という面ではどのような違いがあるでしょうか。まず,Ansibleは構成をPushするのに対し,ChefとPuppetはPullします。
Ansibleの管理性
YAMLと呼ばれる記法を用いて構成ファイルを作成します。YAMLはRubyやPythonなど様々な言語で作成することが可能です。
Chefの管理性
Ruby DSKと呼ばれるプログラムを用いるため,プログラミング技術が必要になります。クライアントがサーバーから構成をPullする形で管理されます。
Puppetの管理性
Puppet DSLと呼ばれる独自の言語を用いるため,管理性は良くありません。システム管理者のためのシステムという感じです。
AnsibleとChefとPuppetのスケーラビリティを比較
どの技術も,スケーラビリティに関しては問題となることはありません。100ノードが200ノードになるとしても,すぐに実現することができます。もちろん,無料範囲内から有料範囲内のノード数になる場合には要注意です。
AnsibleとChefとPuppetの言語を比較
どのような言語を使って管理できるのかは,大きな判断材料になるかもしれません。
Ansibleの言語
AnsibleはYAML(ヤメル/ヤムル)という記法を用います。YAMLとは,XMLのように構造かれたデータを表現する方法です。読みやすく,書きやすく,分かりやすいという特徴があります。
Chefの言語
Chefは,Ruby Doamin Specific Language (Ruby DSL)と呼ばれる言語を用います。Rubyになじみがある方であれば,問題ないでしょう。しかし,慣れるまでには少しの時間が必要です。
Puppetの言語
Puppet DSLと呼ばれる独自の言語を持ちます。これも習得のためのコストがかかるでしょう。
AnsibleとChefとPuppetの相互運用性を比較
相互運用性とは簡単に言うと,WindowやLinuxなどの環境にどれほど縛られないかという事です。
Ansibleの相互運用性
AnsibleはWindowsクライアントをサポートしていますが,Ansibleサーバーは,Linux/UNIXマシンでなければなりません。
Chefの相互運用性
ChefサーバーはLinux/UNIXでなければなりませんが,ChefクライアントはWindowsもサポートしています。
Puppetの相互運用性
PuppetのマスターもLinux/UNIXでなければなりませんが,PuppetエージェントはWindowsもサポートしています。
AnsibleとChefとPuppetの価格は?
これについては様々な体系がありますので,一概に比較することは難しいですが,年額でやすい順にあげるとすれば,Ansible / Chef / Puppetという感じになると思います。
AnsibleとChefとPuppetのトレンドは?
世界の中で,どの程度盛り上がっているのかを,Googleトレンドで確認してみました。過去5年間の世界のデータを比較してみると以下の通りです。
ChefとPuppetが古参として使われていますが,Ansibleが勢いよく上昇しているのが分かります。
では,日本においてはどうでしょうか。
やはり同じく,Ansibleの勢いが伸びてきているのが分かります。
結論:AnsibleとChefとPuppetでどれを選ぶか
上述の比較からしても,Ansibleを採用することに優位性があると思った方は多いのではないでしょうか。
後発なだけ,様々な点でChefやPuppetの足りない点をうまく補っているという印象もあります。
以上,AnsibleとChefとPuppetを比較してみた結果でした。
コメント
[…] 世界でも日本でもAnsibleがスタンダードになることは間違いありません。(参考:AnsibleとChefとPuppetの比較) また,Ansibleを社内に導入することを提案したいものの,自分自身の知識がま […]
価格情報があるのですが、比較はOSSをベースとしているようです。
ChefもPuppetも同じですが、有償版はマスター上からSSHのユーザ名パスワードを入力することでインストールされるので、Ansibleとほとんど大差が無かったですよ。
言語の比較は、多々ありますが、YAMLは構造化言語なので柔軟性が乏しいため、簡単な条件文の書き方が難しく、WindowsとLinuxにApacheを入れるPlaybookを書くときはChefやPuppetのような使い回しが難しいく、初心者には優しいが使い込んでくると手間が掛かかり、管理するファイルが増える傾向にありました。
Chef/Puppet押しと言うわけではないですが、どのように使い、どこまで使いこなすかで、どれを選べばいいかだとおもいます。
他は、Googleトレンドはあてにならないと思います。特にChefと言う違う目的が含まれているからです。
情報ありがとうございました。確かにどの点も一理あると思いました。
現保有しているリソースとの兼ね合いなども考え,状況に応じて選択していくということになりますね。
よい点をご指摘くださり,改めて感謝いたします。
[…] 、リンク貼っておきます。 AnsibleとChefとPuppetの比較 […]