[Mac]chef-soloとBerkshelfを使ってNode.jsの環境構築(MongoDB, Redis)


[まとめ] 現在開催中のKindleセール情報はこちら

今回はchef-soloとBerkshelfを使ってNode.jsの環境構築をやってみた。
併せてMongoDB, Redisもインストールしてみた。

Berkshelfとは

入門Chef Solo』より引用

Opscode CommunityのクックブックはRubyで言うところのgemのようなものです。そしてgemに同じく、複数のクックブックを扱うようになってくると管理がやや煩雑になってきます。
gemの場合Bundlerを使うことで、それらの問題を解決することができますね。もはやRubyistにとってBundlerは必要不可欠のツールになっています。
ChefのサードパーティのクックブックをBundlerのように管理したい、というときに使えるのがBerkshelfというツールです。

前提条件

  • chef-soloインストール済み
  • vagrantインストール済み

上記に関しては [Mac]『入門Chef Solo』を読んで試してみた を参照

GemFileにBerkshelfを追加

cd ~/vagrant/my-chef-repo
vi Gemfile

source 'https://rubygems.org'

gem 'knife-solo', '0.3.0.pre3'
gem 'berkshelf'   # 追加

Berkshelfインストール

bundle install --path vendor/bundle/ --binstubs

Berkshelfにcookbook追加

MongoDBとRedisに関してはopscodeではなく、githubに公開されているcookbookをお借りした

vi Berkshelf

site :opscode

cookbook 'nodejs'
cookbook 'mongodb', git:'git://github.com/edelight/chef-mongodb.git'
cookbook 'redis', git:'git://github.com/kenjiskywalker/cookbooks-redis.git'

cookbookをインストール

bundle exec berks install --path vendor/cookbooks

knife.rb更新

cd ~/vagrant/my-chef-repo/chef-repo
vi .chef/knife.rb

cookbook_path ["cookbooks", "site-cookbooks", "../vendor/cookbooks"] # "../vendor/cookbooks" を追加
role_path     "roles"
data_bag_path "data_bags"
#encrypted_data_bag_secret "data_bag_key"
knife[:solo_path] = '/tmp/chef-solo'

jsonにrecipe追加

vi nodes/vagrant.json
{
  "run_list":[
    "recipe[nodejs]",
    "recipe[mongodb::10gen_repo]",
    "recipe[mongodb]",
    "recipe[redis]"
  ]
}

vagrantにrecipeをインストール

./bin/knife solo cook vagrant

# knife solo 0.3の場合は-oオプションをつけることで個別にrecipeをインストールすることもできる
# ./bin/knife solo cook vagrant -o mongodb
# ./bin/knife solo cook vagrant -o redis

recipeが正しくインストールができているか確認

ssh vagrant

node -v
v0.10.2

mongo --version
MongoDB shell version: 2.4.2

redis-server -v
Redis server version 2.4.16 (00000000:0)

これでNode.jsの環境構築が一通りできた

参考URL

[まとめ] 現在開催中のKindleセール情報はこちら