(laravelのコードを読んでいたけど、ドキュメントまず読めという電波を受信してせっせとドキュメントを読んでいたら、色々勉強する必要に迫られて別のことやっている。)
例えばchef。
chefとかcookbookとかrecipeとかknifeとか、無知なのでネーミングにイラッとする
- 公式のtutorialやった
- 今っぽい Vagrant + Chef Solo チュートリアルやった
- vagrant-omnibus入れた
- vagrant-berkshelf入れた
- ハマった
- https://github.com/berkshelf/vagrant-berkshelf/issues/188
- rvmが悪さする
- 仕方ないので
rvm gemset use global
で凌ぐ
$ ~/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
- ↓読み方のコツとか大事
- 他の人が作った 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