cookbook_fileリソースでCookbookNotFoundが発生した

cookbook_fileでCookbookNotFoundというエラーがでた。
しかし、どこをどうみても合っているようにしか見えず、2時間ほどハマった。

エラーは以下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
* cookbook_file[/etc/nginx/nginx.conf] action create

================================================================================
Error executing action `create` on resource 'cookbook_file[/etc/nginx/nginx.conf]'
================================================================================

Chef::Exceptions::CookbookNotFound
----------------------------------
Cookbook cookbooks not found. If you're loading cookbooks from another cookbook, make sure you configure the dependency in your metadata

Resource Declaration:
---------------------
# In /var/chef/cache/cookbooks/cookbooks/recipes/default.rb

25: cookbook_file '/etc/nginx/nginx.conf' do
26: source 'nginx.conf'
27: owner 'root'
28: group 'root'
29: mode '0755'
30: end
31:

原因はmetadata.rbの名前。
cookbooks/site という構成でcookbookを作成しているのだが、cookbooks/site/metadata.rbのnameが’cookbooks’となっていた。
これによりcookbook_fileリソースがcookbooksというcookbookを参照していたが、そんなものはないのでCookbookNotFoundエラーが発生していた。
nameを’site’と変更してやることでうまくいくようになった。