chefを入門するなどしていた

(laravelのコードを読んでいたけど、ドキュメントまず読めという電波を受信してせっせとドキュメントを読んでいたら、色々勉強する必要に迫られて別のことやっている。)

例えばchef。

chefとかcookbookとかrecipeとかknifeとか、無知なのでネーミングにイラッとする

$ ~/sandbox/ubuntu-14 $ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu-14'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: ubuntu-14_default_1407051630431_35510
==> default: The cookbook path '~/.berkshelf/default/vagrant/berkshelf-20140803-30793-a5v2ng-default' doesn't exist. Ignoring...
Updating Vagrant's berkshelf: '~/.berkshelf/default/vagrant/berkshelf-20140803-30793-a5v2ng-default'
RuntimeError: Couldn't determine Berks version: #<Buff::ShellOut::Response:0x00000105051328 @exitstatus=1, @stdout="", @stderr="/Applications/Vagrant/embedded/lib/ruby/2.0.0/rubygems/dependency.rb:296:in `to_specs': Could not find 'berkshelf' (>= 0) among 63 total gem(s) (Gem::LoadError)\n\tfrom /Applications/Vagrant/embedded/lib/ruby/2.0.0/rubygems/dependency.rb:307:in `to_spec'\n\tfrom /Applications/Vagrant/embedded/lib/ruby/2.0.0/rubygems/core_ext/kernel_gem.rb:47:in `gem'\n\tfrom ~/.rvm/gems/ruby-2.0.0-p247/bin/berks:22:in `<main>'\n\tfrom ~/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `eval'\n\tfrom ~/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `<main>'\n">
  • vagrant up はできたけどうまくいかない
sudo cat /var/chef/cache/chef-stacktrace.out
Generated at 2014-08-03 07:43:26 +0000
ArgumentError: You must specify at least one cookbook repo path
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.14.2/lib/chef/cookbook_loader.rb:43:in `initialize'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.14.2/lib/chef/policy_builder/expand_node_object.rb:60:in `new'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.14.2/lib/chef/policy_builder/expand_node_object.rb:60:in `setup_run_context'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.14.2/lib/chef/client.rb:265:in `setup_run_context'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.14.2/lib/chef/client.rb:429:in `do_run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.14.2/lib/chef/client.rb:213:in `block in run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.14.2/lib/chef/client.rb:207:in `fork'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.14.2/lib/chef/client.rb:207:in `run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.14.2/lib/chef/application.rb:237:in `run_chef_client'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.14.2/lib/chef/application/solo.rb:226:in `block in run_application'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.14.2/lib/chef/application/solo.rb:218:in `loop'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.14.2/lib/chef/application/solo.rb:218:in `run_application'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.14.2/lib/chef/application.rb:55:in `run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.14.2/bin/chef-solo:25:in `<top (required)>'
/usr/bin/chef-solo:23:in `load'
/usr/bin/chef-solo:23:in `<main>'vagrant@vagrant:~$
  • https://github.com/berkshelf/vagrant-berkshelf/issues/78
    • ぐぐったらでてきたこれを試して、vagrant reload, vagrant provisionしたらできた
  • ↓読み方のコツとか大事
    • 他の人が作った Cookbook を使う時のコツは README を読んで、そのあと attributes/ と recipes/ 以下を読むことです。この2つが Chef Solo では大きなキーです。
    • と言いつつなんでmysql_serviceというresourceが使えるようになるのか気になってしまうのでlibraries以下も読んでみた

まだまだ自分でcookbook, recipe, resource, attributesなど説明できる気がしないので精進する必要がある

これでは面白みがないので自分でlaravelのアプリの開発環境を作るなどしてみたい。

2014/08/10追記

RuntimeError: Couldn't determine Berks version のエラーがまたでて、前書いた方法では解決しなかった。 ↓のissueにあるが、PATHのrbenvよりも先の位置に/opt/chefdk/binを追加しないといけないようだった https://github.com/berkshelf/vagrant-berkshelf/issues/212