Berkshelfを使うと、cookbookのdependenciesを解決してくれるらしい。
Berkshelfは基本はopscodeに登録されているcookbookを使用する。
site :opscode
cookbook 'mysql'
cookbook 'nginx', '~> 0.101.5'
公式のcookbookをローカルにcloneして変更したものを使いたいときは、以下。
cookbook "artifact", path: "/Users/reset/code/artifact-cookbook"
githubリポジトリを参照するときはこんな感じ。
refでrevisionを指定している。
cookbook "riak", github: "basho/riak-chef-cookbook", ref: "2.2.0"
今回はriak-chef-cookbookを変更して、
BackendのDBとしてBitcaskではなくeLevelDBを使用するように変更した。
以下、vagrant-riak-clusterをgit cloneしたとして進める。
まずはcookbookをclone
$ cd vagrant-riak-cluster
$ git submodule add https://github.com/basho/riak-chef-cookbook.git
cookbookの書き換え
https://github.com/basho/riak-chef-cookbook/blob/master/attributes/default.rb
# riak_kv storage_backend
default['riak']['config']['riak_kv']['storage_backend'] = "riak_kv_eleveldb_backend"
Berkshelfでローカルパスを指定
Berkshelf
cookbook "riak", path: "./riak-chef-cookbook"
Berkshelf.lockがすでに作成されている場合はBerkshelfへの変更が反映されない。
その場合はBerkshelf.lockを削除(なにかコマンドがあるかも?)
vagrant up
して確認
$ vagrant up
$ vagrant ssh riak1
vagrant@riak1 $ less /etc/riak/app.config
{riak_kv, [
~~~~
{storage_backend, riak_kv_eleveldb_backend},
~~~~
]},
無事、変わっていることを確認。