chef-clientが怖くて実行できない

まえがき

chef(server)を使用してサーバーの自動セットアップを設定しました。
主な用途はさくらVPSのセットアップ。
私が設定しているroleは次の設定を行います。

今日新しく契約したサーバーで

# chef-client

を実行したところ、sudo のレシピで落ちるわけです。
どうやらchef 11.4.4だとレシピのコンパイルエラーが発生するみたいで、11.4.0だと動くようです。
今回は新規セットアップだから良いけど、レシピやChefのバージョンの兼ね合いで動いたり動かなかったりするのは困りますよね?

テストすればいいじゃん

はいはい。Cucumber-chefやChefSpecでテストを書いて、Vagrantで検証すればいいんでしょ?
でも、本番サーバーと検証サーバーは違いますよね。いくらChefで管理しているからといって、少なからず検証環境と本番環境の内容は異なってくるはずです。

Chefの導入が簡単なケースについて考えた

先日行われたオープンセミナー2013岡山の懇親会で@twingo_bさんとお話したことを思い返しながら、Chefの導入が簡単なケースについて考えてみました。

・サーバーの役割を細分化する

私が設定したように全ての役割を担うサーバーを一つ立てるのではなく、役割を細分化したサーバーを複数立てたほうがChefの動作検証は容易なのではないかと思います。理由は次の通り。

  • Chefのレシピは直列処理なので数が増えるほど失敗する確立が上がる
  • サーバーを一つの役割に特化させれば、設定変更が及ぼす範囲が狭くなる
  • 影響範囲が狭いとVagrantでの検証も容易
・スナップショットに対して検証する
  • 複数のサーバーを立てることができないのであれば、AWS等のスナップショットを取ることができるIaaSを利用する
  • オンプレミスでサーバーを設置する場合は仮想化して容易にスナップショットを取れる環境を構築しておく
  • テストはスナップショットを復元して行う

この2パターンのどちらかを実施すれば、より自信を持ってchef-clientが実行できると思います。
さて、さくらVPSの場合はどうするのが良いんだろうね?