hello-world.jp.net
webエンジニアのメモ。とりあえずやってみる。

[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』を読んで試してみた を参照

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


Related #CentOS

vagrantでmysqlレプリケーション実験環境をお手軽作成

mysqlのレプリケーション設定をする機会があったので、実環境で試す前に実験してみたいと思い、vagrantを使ってレプリケーション設定用のサーバを立ててみました。

ログファイルを空にする方法

ローカル環境ではmysqlのクエリログを出力するようにしているのですが、放置していたらかなりの容量になってきたので一度空にしようと思って調べてみました。

Vagrant upで"The Guest Additions on This VM Do Not Match the Install Version of VirtualBox!"と言われた時の対策(CentOS6.4)

久しぶりにvagrantを使っていたらvagrant up時に以下の警告が出ていました。