オールアバウト Advent Calendar 7日目です。
オールアバウトではChef Serverを使ってインフラを管理しています。
しかし、Chef-ZeroもしくはAnsibleも最適なタイミングがあるので、
個人的な使い分けを書いていきます。
Chef Server
Chef Serverは現在、共有開発環境やステージング・本番環境に使用しています。
これにより、nodeの設定がChef Serverのweb管理画面から一通り確認できるようになっています。
メリット
- Chefの特性としてべき等性があるため、設定の更新が多いサーバーでは便利。
- nodeを集約管理するすることができるので、Chef Serverでnodeの設定を把握できる。
- Web管理画面があるため、ブラウザからでも操作可能。
デメリット
- Chef Serverの冗長化の構築・運用が辛い。
- 構成する要素が多いため、トラブルが発生した際の対応コストが高い。
- Chef Server構築する際に、学習コストと運用コストが高い。
Chef-Zero
Chef-Zeroはlocal開発環境を作成する時や、Chef Serverにアップする
Cookbookの作成・修正を行う際に使用します。
また、この過程を踏む事によりgitでCookbookの管理ができます。
メリット
- Chef Serverと同じで、べき等性を担保できる。
- Boxファイルもあるため、構築のコストが低い。
- Cookbookさえ管理すれば、冗長構成を考えなくていい。
デメリット
- nodeを集約管理することができない。
- 設定の確認にはnodeに適用されているCookbookの確認が必要。
Ansible
業務での使用はありませんが、個人的に利用しています。
nodeの設定を更新せずに、設定変更があったらnodeを作り直して使用しています。
メリット
- クライアントソフトウェアのインストールが不要。
- YAMLファイルでシンプルな記述が可能。
- cliから対話的に設定のインストールが可能。
デメリット
- Chefと同じようにべき等性を保とうとするのが大変。
まとめ
Chef Server
複数台のサーバーを集約管理をしたい時や、オンプレなどを使用していて、
サーバー設定の更新が多いような場合に、使用するのが妥当ではないかと思います。
Chef Serverに対して変更をあまり加えない場合は、運用し始めたら安定して使用出来るので便利です。
Chef-Zero
local環境を作成したり、集約管理を考えない場合はChef-Zeroを使っておくのが無難ではないかと思います。
Cookbookの管理さえ気をつければ、サーバーの構成全てをコード管理する事が可能です。
Ansible
クラウドの様な環境でサーバーの設定変更を行わずに、新規構築する場合に向いていると思います。
Ansibleはインストールする内容や設定内容を、簡単に書けるのがメリットと思っています。
そのため、設定内容を素早く書いてしまい、作って壊す事が簡単に出来る
クラウドでの使用が向いていると思います。