chef-clientが怖くて実行できない
まえがき
chef(server)を使用してサーバーの自動セットアップを設定しました。
主な用途はさくらVPSのセットアップ。
私が設定しているroleは次の設定を行います。
- DBサーバーのインストール
- Ruby環境のインストール
- Railsアプリケーションサーバーのインストール
- 細々した設定
今日新しく契約したサーバーで
# chef-client
を実行したところ、sudo のレシピで落ちるわけです。
どうやらchef 11.4.4だとレシピのコンパイルエラーが発生するみたいで、11.4.0だと動くようです。
今回は新規セットアップだから良いけど、レシピやChefのバージョンの兼ね合いで動いたり動かなかったりするのは困りますよね?
テストすればいいじゃん
はいはい。Cucumber-chefやChefSpecでテストを書いて、Vagrantで検証すればいいんでしょ?
でも、本番サーバーと検証サーバーは違いますよね。いくらChefで管理しているからといって、少なからず検証環境と本番環境の内容は異なってくるはずです。
Chefの導入が簡単なケースについて考えた
先日行われたオープンセミナー2013岡山の懇親会で@twingo_bさんとお話したことを思い返しながら、Chefの導入が簡単なケースについて考えてみました。
・サーバーの役割を細分化する
私が設定したように全ての役割を担うサーバーを一つ立てるのではなく、役割を細分化したサーバーを複数立てたほうがChefの動作検証は容易なのではないかと思います。理由は次の通り。
- Chefのレシピは直列処理なので数が増えるほど失敗する確立が上がる
- サーバーを一つの役割に特化させれば、設定変更が及ぼす範囲が狭くなる
- 影響範囲が狭いとVagrantでの検証も容易