はじめまして。DevOpsのDevをメインで担当しています、ヤマシ(山嵐が由来?)です。
サーバの環境構築やデプロイ作業、複数環境へのリリースなどを標準化する一環として、
それらを自動化する構成管理ツールを導入する企業が増えています。
今回は、代表的な製品 Chef, Ansible, Puppet の基本情報を比較して、選定するための判断材料に役立てられればと思います。
なお、変化の激しい分野でもありますので、ここでは調査時点(2018.6)での情報をもとに記載しています。
直接こちらのデータだけで判断せず、最新の情報も調べつつご参考程度に拝見ください。
項目 | 小項目 | Chef(シェフ) | Ansible(アンシブル) | Puppet(パペット) |
---|---|---|---|---|
公式サイト | https://www.chef.io/chef/ | https://www.ansible.com/ | https://puppet.com/ | |
公式ドキュメント | https://docs.chef.io/ | http://docs.ansible.com/ansible/ | https://puppet.com/ja/docs | |
ライセンス | Apache License 2.0 | GPL v3 | Apache License 2.0 | |
リリース | 調査時点最新バージョン(2018/6/11時点) | Chef Client:14.1.1 Chef Server:12.17.33 |
2.5.4 | 5.5.2 |
最終リリース日 | 2018/5/8 | 2018/6/1 | 2018/6/7 | |
初回リリース日 | 2008/6/16 | 2012/3/9 | 2005/8/30 | |
リリース頻度 | メジャーリリース:2年に1回程度 マイナーリリース:3か月に1回程度 |
メジャーリリース:2~3年に1回程度 マイナーリリース:2~3か月に1回程度 |
メジャーリリース:4→5のアップデートに1年 マイナーリリース:1~2か月に1回程度 |
|
リリースノート | https://docs.chef.io/release_notes.html | https://github.com/ansible/ansible/releases | https://puppet.com/docs/puppet/5.5/release_notes.html | |
コミュニティ | 日本Chefユーザ会 あまり活発なコミュニティは見つかりませんでした。 |
日本Ansibleユーザ会 | Japan Puppet User Group | |
有償版 | 有無 | 有(Chef Server Enterprise) | 有(Ansible Tower) | 有(Puppet Enterprise) |
主な機能 | 権限制御可能な管理コンソール HA構成 レプリケーション |
Web管理コンソール ジョブスケジューリング ロールベースのアクセス制御 |
Web管理コンソール オーケストレーション機能 |
|
情報量 | ○(多い) 公式ドキュメント:整備されているが、英語のみ インターネット上の情報:日本語、英語問わず 和書:多数 洋書:多数 バグ/セキュリティ関連情報:githubで全て公開 リリース情報:公式サイト、githubで公開 開発者向け情報:公式サイト、githubで公開 |
△(少ない) 公式ドキュメント:整備されているが、英語のみ インターネット上の情報:日本語、英語問わず 和書:数冊(2016年以降の出版物が多め) 洋書:多数 バグ/セキュリティ関連情報:githubで全て公開 リリース情報:公式サイト、githubで公開 開発者向け情報:公式サイト、githubで公開 |
△(少ない) 公式ドキュメント:あり インターネット上の情報:日本語、英語問わず 和書:数冊 洋書:多数 バグ/セキュリティ関連情報:公式サイト リリース情報:公式サイト 開発者向け情報:公式サイト |
|
開発元 | 企業名 | 米 Chef 社 元Opscode社、2013年Chefに会社名変更 |
RedHat社 2015年10月に米RedHat,Incに買収される Ansible Towerも開発・リリースしており、Ansibleとその周りのツールについては、今後その発展が期待されます。 |
Puppet Labs社 |
実行モジュールのインストール先 | スタンドアロン構成:クライアントのみ クライアント/サーバ構成:クライアントとサーバ |
サーバのみ (エージェントレス) |
スタンドアロン構成:クライアントのみ クライアント/サーバ構成:クライアントとサーバ |
|
環境 | サーバ(OS) | Win/Mac/Linux | Mac/Linux Win(WinRM, PowerShel3.0以上) Ansible2.4以降はpython2(2.6 or 2.7)かPython3(3.5以上)を要求 |
Win/Mac/Linux |
クライアント(OS) | Win/Mac/Linux | Win/Mac/Linux (SSH接続) |
Win/Mac/Linux | |
実装言語 | サーバ | ErLang | Python | Ruby |
クライアント | Ruby | Python | Ruby | |
構成記述ファイル | Ruby | YAML | 独自マニフェスト |
よく比較される代表的な構成管理ツールについて、
基本情報をまとめてみました。
やはりスモールスタートで導入するならエージェントレスのAnsibleが使いやすい印象です。
構成定義ファイルもシンプルに記述することができます。
ただ、シンプルさゆえに制約もあるため、実際に運用に当てはめた時に手の届かないところもでてくるかと思います。
※そもそも複雑な環境構成になっている点でおかしいのですが、それはまた別の問題として・・・。
導入を検討する際には、各ツールのチュートリアル等を参考にしてどういったことが実現できるのか?(または実現できないのか?)
というものをあらかじめ吟味した上で、自プロジェクトに適用できるか見極めることが重要だと思います。