A Peak Never Ending !

Chef-soloを使ってみる

そろそろ本腰いれてchef使ってみようかなと思ったのでちょっと試してみる。 ちょうどさくらのVPSを2つ借りてて、bashからzshに移ろうかな〜と思ってたのでこいつをchefでやってみる。 chefは一言でいうとrecipe(設定のルール)を作ってrole(どのcookbookを使うか)をnode(管理対象ホスト)に割り当てるって感じみたい。 クライアントだけで動かすchef-soloと管理用のサーバを用意するchef-serverとがあるみたいだけど、 chef-serverはもっぱら面倒という噂を聞くのでchef-soloを使ってみた。

zshをchefでインストール

インストールして雛形を取ってくる。ちなみにrootでやらかしてます。

1
2
3
4
gem install chef
git clone git://github.com/opscode/chef-repo.git
cd chef-repo
mkdir .chef

chef-soloを実行するときのconfigを準備する

/root/chef-repo/.chef/solo.rb
1
2
file_cache_path "/tmp/chef-solo"
cookbook_path "/root/chef-repo/cookbooks"

recipeを用意する。recipeはcookbook単位で管理されるみたいなのでcookbookをまず作る。 cookbookはapacheとかzshとかパッケージ単位で作るのが一般的みたい。 とりあえずzshインストールしたいのでzshていう名前のcookbookを作ってみる。

zshクックブックを作成
1
rake new_cookbook COOKBOOK=zsh

つづいてインストール用のレシピを作成

/root/chef-repo/cookbooks/zsh/recipes/default.rb
1
2
3
package "zsh" do
  action :install
end

適用するレシピを定義する

/root/chef-repo/.chef/chef.json
1
2
3
{
    "run_list": [ "recipe[zsh]" ]
}

chef-soloコマンドでレシピを実行する

1
chef-solo -c /root/chef-repo/.chef/solo.rb -j /root/chef-repo/.chef/chef.json

インストール出来た。基礎はわかったので、もう少し細かい機能を追うかな。

おまけ