Help us understand the problem. What is going on with this article?

Vagrant Berkshelf plugin を使う場合のメモ

More than 5 years have passed since last update.

Vagrant Berkshelf plugin

RiotGamesがリリースしてるBerkshelfというプロダクト。
GemfileっぽくBerksfileというファイルに使いたいcookbookを書いていく。

Berksfile
site :opscode

cookbook 'apt'
cookbook 'git'
cookbook 'ruby'

そして、cookbookをネット経由だかリソース経由だかでインストールする。

berks install --path cookbooks

Berkshelf自体、とても便利。
Vagrantと連携させたいなーと思ってたら
vagrant-berkshelf pluginがあった。RiotGames製。

これで、Berksfileにcookbook一覧を書いて
あれこれすれば終わるな~、便利だなーと思ったがはまりどころが。

Berksfile
site :opscode

cookbook 'rbenv', git: 'https://github.com/fnichol/chef-rbenv.git'

んで、こうしてberks installすれば、
rbenvのgithub上で公開されてるクックブックを手元に落としてこれる。便利。

site-cookbooks転送でハマり

でまあ、enabled = trueにしないとVagrant Berkshelf plugin無効になってると思うじゃないですか。
そうじゃなかったんですよね。明示的にenabled = falseにする必要があります。
まあ、Berkshelfの教義に沿うならそりゃcookbooksだけしか使わないですよね...

Vagrantfile
config.berkshelf.enabled = false

はまって週末を無駄にしました...

chef.cookbooks_path = [ "cookbooks", "site-cookbooks" ]

以上のように明示的にcookbooksのパス指定しても、
Vagrant box上にホストマシンからcookbookが転送されないので
「???」ってなっちゃって大変でした。

メタなcookbooksを使うには

Vagrant Berkshelf pluginを使いつつ、メタな、
他のcookbook利用前提のcookbooksを使うにはどうするか。

cookbookそのものを調整中の場合

Berksfileのcookbookにpathとしてローカルを指定する

Berksfile-local
cookbook 'my_cookbook', path: "/home/hoge/fuga/site-cookbooks/my_cookbook'

ローカル指定(path)しても、Berkshelfは
opscodeにあるcookbook優先して確認しにいくので
cookbookについてはユニークな名称じゃないといけない。

メタなcookbookが完成した場合

Berksfileのcookbookにメタcookbookのリポジトリを登録する

Berksfile-git
cookbook 'my_cookbook', git: 'https://github.com/futoase/chef-my_cookbook.git'

その他

chefが既にインストールされてるVagrant box使う場合、
古いバージョンのchefを利用することになるので、vagrant-omunibus pluginを利用すると良いです。

Vagrantfile
config.omnibus.chef_version = "11.4.4" # バージョン 11.4.4 の chef を使いたい場合

knife-solo使うとか他にもやり方はあるけど、なんかこう手段が多すぎる...

個人的にresetさんとお話してみたい

futoase
Welcome to underground...
https://matsuzaki.dev/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away