vagrant + berkshelfを使うときに独自のcookbookをどう使うか
現在、vagrant-berkshlef(ver. 1.2.0)を使うと、cookbooks_pathが乗っ取られるので、もともとそこに指定していた独自のcookbookが見えなくなってしまう。ので、試行錯誤した結果をめも。
方法1 Berksfileでcookbookを管理して、cookbook自体はlocalにinstallして使う
この場合は、vagrant-berkshelfのpluginは使わずに、Vagrantfileで指定したpathにinstallして使う。
# Vagrantfile dev.vm.provision :chef_solo do |chef| chef.cookbooks_path = [ "share/chef/cookbooks", "share/chef/site-cookbooks" ] $ ls Berksfile $ berks install --path share/chef/cookbooks
方法2 Berksfileにpath:で指定する
Berksfileで、cookbookのsourceとしてローカルのcookbookを指定できるのでそれを使う。(参考:Redirecting…)
# Vagrantfile config.berkshelf.enabled = true # Berksfile cookbook 'something', path: 'chef/cookbooks/something'
後者の方がcookbookの追加・更新もれないしいいかなと思いつつ必要なcookbookをBerksfileでも全部指定しないと行けないのがいけてなかったり。vagrant-berkshelfの挙動がもう少しよしなになればいいなとも思っていたり。でも、基本本番と同じ構成で開発したいので、ローカルから直接provisionするのは最低限で、各provisioningはリモートでする感じになるのかなぁと。