Chef - no resource or method named windows_http_acl
我正在尝试在我的一本食谱中使用
当我尝试使用它时,我得到了这个错误。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | ================================================================================ Recipe Compile Error in c:/chef/cache/cookbooks/foo/recipes/bar.rb ================================================================================ NoMethodError ------------- No resource or method named `windows_http_acl' for `Chef::Recipe"bar"' Cookbook Trace: --------------- c:/chef/cache/cookbooks/foo/recipes/bar.rb:26:in `from_file' Relevant File Content: ---------------------- c:/chef/cache/cookbooks/foo/recipes/bar.rb: 26>> windows_http_acl 'http://+:8080/' do 27: user"#{node['domain']}\\\\foobar" 28: end 29: |
我的模块 metadata.rb
1 2 3 4 5 | .... depends 'windows', '~> 1.37.0' depends 'iis', '~> 4.1.1' depends 'chef_handler' |
对比操作码/windows metadata.rb
我的 Berksfile
1 2 3 4 5 6 | source"https://supermarket.chef.io" metadata cookbook 'windows', git: 'https://github.com/opscode-cookbooks/windows.git' cookbook 'iis', git: 'https://github.com/opscode-cookbooks/iis.git' |
我的默认食谱
1 2 | include_recipe 'windows' include_recipe 'foo::bar' |
我尝试运行带有调试功能的 Chef 客户端,但遗憾的是它没有显示任何信息。
我什至尝试过 fork opscode/windows 食谱,并在 metadata.rb 文件中添加一个 \\'provides windows_http_acl\\' 语句。
1 2 3 4 5 6 7 | version '1.37.0' supports 'windows' source_url "https://github.com/opscode-cookbooks/windows" issues_url "https://github.com/opscode-cookbooks/windows/issues" depends 'chef_handler' provides 'windows_http_acl' |
什么可能导致我的说明书无法找到 windows_http_acl 资源?我对厨师很陌生,所以也许我缺少一些简单的东西。
更新
我已尝试删除 berksfile.lock 以确保它没有旧版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | DEPENDENCIES foo path: . metadata: true iis git: https://github.com/opscode-cookbooks/iis.git revision: 58fffd8eb30ac34cc99672995e12289556a4a074 windows git: https://github.com/opscode-cookbooks/windows.git revision: b469294f7581863f8d76f8b0c0fbfb5dc2617983 GRAPH foo(0.x.x) chef_handler (>= 0.0.0) iis (~> 4.1.1) windows (~> 1.37.0) chef_handler (1.1.9) iis (4.1.1) windows (>= 1.34.6) windows (1.37.0) chef_handler (>= 0.0.0) |
比其他答案更正确的版本是
1 | berks upload windows --force --no-freeze |
这将强制上传,即使您可能在之前的上传中冻结了它。这是运行说明书的预发布版本的一般问题。
正如 IRC 上的 coderanger 指出的那样。运行以下命令发现我的厨师服务器中没有该资源。
1 | knife cookbook show windows 1.37.0 providers |
我删除了食谱并重新上传,现在列出了 http_acl.rb 资源。
1 2 | knife cookbook delete windows rm Berksfile.lock && berks install && berks upload |