11

我正在为一个流浪盒子的厨师食谱而苦苦挣扎。我正在使用厨师独奏。

我对 Ruby 不太满意(我以前从未使用过它),所以如果我vagrant provision每次都必须这样做,那么编写我的食谱的过程会很长。

有没有办法调试特定的配方?甚至从虚拟机外壳。

我已经看到它chef-shell存在(http://docs.opscode.com/chef_shell.html),当我在虚拟机中时我可以启动它(它可以工作),但我不明白如何加载我的食谱并对其进行测试。

4

4 回答 4

30

在当前 vagrant chef 配置器中启用调试输出的正确方法是使用 chef.log_level,而不是手动使用 chef-solo 或使用 chef.arguments:

Vagrant.configure("2") do |config|
  # ...
  config.vm.provision :chef_solo do |chef|
    chef.log_level = :debug
    # ...
  end
end
于 2013-11-09T04:25:10.633 回答
8

除了上面的输入,这是非常好的;-)

在调试chef-solo模式下运行(启用调试输出)肯定会有所帮助。

例如

chef-solo -c solo.rb -j node.json -l debug

于 2013-07-01T22:57:52.733 回答
5

如果您在 Vagrant 中运行 chef-solo,则可以从 Vagrantfile 中注入额外的自定义参数(用于日志记录/调试),如下所示:

 Vagrant.configure("2") do |config|
    # ...
    config.vm.provision :chef_solo do |chef|
      chef.arguments = '-l debug'
      # ...
    end
 end
于 2013-09-13T05:07:52.657 回答
4

您可以直接从 VM 内的 shell 使用 chef-solo,但这需要与 vagrant 不同的文件结构。

它看起来有点像这里所做的:

  • 你需要你的食谱目录
  • 您需要一个 .json 文件,其中包含驻留在chef.jsonVagrantfile中的所有数据
  • 你需要一个包装器/启动 ruby​​ 脚本,就像上面帖子中的那样。

一般来说,尝试搜索在没有 Vagrant 的情况下解释 chef-solo 的教程。

于 2013-06-30T10:19:35.683 回答