[Mac]chef-soloとBerkshelfを使ってNode.jsの環境構築(MongoDB, Redis)
今回は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』を読んで試してみた](https://blog.hello-world.jp.net/centos/461/) を参照
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
- Macでchef-soloとBerkshelfの環境構築手順
- [[Chef]入門Chef-Soloを片手にRailsアプリを動作させるところまでやってみた](http://d.hatena.ne.jp/ntaku/20130324/1364132658)