无法在 vagrant 中使用厨师配置

Cannot use chef provisioning in vagrant

我创建了一个基本的 vagrant box 并配置如下

config.vm.provision :chef_solo do |chef|
    chef.add_recipe "apache2"
    chef.json = { :apache => { :default_site_enabled => true } }
end

我还将食谱添加到我的项目中

git submodule add https://github.com/svanzoest-cookbooks/apache2/ cookbooks/apache2

但是当我 运行 vagrant provision 时,我得到了这个

==> default: [2015-03-26T14:55:52+00:00] INFO: Forking chef instance     to converge...
==> default: [2015-03-26T14:55:52+00:00] INFO: *** Chef 12.1.2 ***
==> default: [2015-03-26T14:55:52+00:00] INFO: Chef-client pid: 1130
==> default: [2015-03-26T14:55:54+00:00] INFO: Setting the run_list to ["recipe[apache2]"] from CLI options
==> default: [2015-03-26T14:55:54+00:00] INFO: Run List is [recipe[apache2]]
==> default: [2015-03-26T14:55:54+00:00] INFO: Run List expands to [apache2]
==> default: [2015-03-26T14:55:54+00:00] INFO: Starting Chef Run for precise32
==> default: [2015-03-26T14:55:54+00:00] INFO: Running start handlers
==> default: [2015-03-26T14:55:54+00:00] INFO: Start handlers   complete.
==> default: [2015-03-26T14:55:54+00:00] ERROR: Running exception  handlers
==> default: [2015-03-26T14:55:54+00:00] ERROR: Exception handlers complete
==> default: [2015-03-26T14:55:54+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
==> default: [2015-03-26T14:55:54+00:00] ERROR: Cookbook iptables not found. If you're loading iptables from another cookbook, make sure you configure the dependency in your metadata
==> default: [2015-03-26T14:55:54+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

可能需要 iptables cookbook,所以我添加了它。然后我收到这条消息

==> default: [2015-03-26T14:58:32+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
==> default: [2015-03-26T14:58:32+00:00] ERROR: Cookbook logrotate not found. If you're loading logrotate from another cookbook, make sure you configure the dependency in your 
==> default: [2015-03-26T14:58:32+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

需要 logrotate 食谱吗? 为什么它不断需要食谱?这里的元数据是什么? 谁能帮帮我?

说明书可以依赖于其他说明书。这使他们能够依赖这些其他食谱提供的功能。

在您的情况下,您的 apache2 说明书取决于 iptableslogrotate 说明书。您可以在每本食谱的 metadata.rb 文件中查看。对于您的 apache2 食谱,您可以找到 metadata.rb 文件 on GitHub.

请注意,食谱也可以具有递归依赖性,即它们可以具有必须全部满足的进一步依赖性。因为如果这样,通常建议使用像 Berkshelf or Librarian 这样的工具来管理你的食谱,它可以自动和一致地下载所有食谱依赖项。