chefでサーバーの初期構築をする時、以下のコマンドでchefをインストールして
curl -L https://www.opscode.com/chef/install.sh | bash
その後、ソースをgitから持ってきてchef-soloを実行してました
chef-solo -c solo.rb -j localhost.json
ある時、chefをインストールしたらバージョン12になって、以下のようなエラーが出るようになりました。
ERROR: Cookbook loaded at path(s) [/tmp/vagrant-chef-1/chef-solo-1/cookbooks/xxxxxx] has invalid metadata: The `name' attribute is required in cookbook metadata
とか
ERROR: Cookbook hogehoge not found. If you're loading hogehoge from another cookbook, make sure you configure the dependency in your metadata
とか。。
どうやらchef 12 から cookbookのmetadata.rb内のname attributeの記述が必須になったり、重要視されるようになったようです。 具体的に上側のエラーはmetadata.rbにnameの記述がない、というエラー。 下側のエラーはmetadata.rbのnameに書かれてる名前が実際のレシピと異なる場合に出てるみたいです。 (例えばディレクトリ名がhogeなのに name が fuga と設定されていてrecipe[hoge]と呼び出した場合に上記のエラーになります)
上記のようなエラーが出た場合は cookbookディレクトリ内にあるmetadata.rbのname部分を見直してみてください。
name 'hoge' ←ここが重要! maintainer 'YOUR_COMPANY_NAME' maintainer_email 'YOUR_EMAIL' license 'All rights reserved' description 'Installs/Configures hoge' long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) version '0.1.0'