- Advent Calendar を社内ブログで執筆した ので今回はそれ + α
- Chef の重要な特徴 -> 冪等性: 何度実行しても同じ状態になる
- 導入背景
- 刷新するにあたって : 新規のサーバを Chef で構築して、構築済みサーバは対象外とする・既存のサーバ管理システムを利用する
- Chef で構築していないサーバも平行運用
- 運用スクリプト、運用手順がサーバ管理システムに依存しているのでそこはケアする
Chef Solo でそれぞれのサーバーに cookbook を入れるのは煩雑になるだろうと思って server を使ったが結局 solo になった
Chef solo + α のアプローチ
オープンなクックブックは汎用的に作られすぎていて複雑になってしまっているのでほぼ自社開発している
- Chef は学習コストが高いと言われる。Chef 使いを育てる必要がある
- 初心者 Chef アンチパターン by Julian Dunn
クックブックの開発
- テストを書く : serverspec / Test Kitchen, chefspec, Foodclitic (Lint ツール)
- TDD 的な開発を後押しする
- リグレッションを防ぐ
- ドキュメント代わり(構築後の姿がわかりやすい)
- 本番サーバの構築テスト
- NW 周りの設定不備で Jenkins につながらなくなったことがある
- chefspec は VM を使わないので早い
- Foodcritic : クックブックの Lint ツール、コードに統一感を持たせる
- Github x Jenkins
- GitHub に push -> Jenkins がテスト -> Jenkins でデプロイ
- テストを書く : serverspec / Test Kitchen, chefspec, Foodclitic (Lint ツール)
運用中の障害、サーバ不具合 -> 構築ログが見たい
- script コマンドや screen でログをとる
- 実行ログは自動的に DB に入るようにした
所感
IP 周り、どことどこをつなげるとかロールの先のノード依存の属性の管理とか Chef server だとやりやすかったりするんだろうか。内省されたツールの話でもあったのでそのまま参考になる感じでもなかったけど chefspec とか Foodcritic あたりのツールを知れたというのと、やはり Chef のレシピ書くのって結構コストかかるよねというのは同じなんだと認識できたのは良かった。
Opscode の cookbook、複雑すぎて使ってないという話だったけど信頼性としても自分で書けるなら書いてしまった方が安心だよねという気も。