是否有可能从流浪盒调试厨师食谱?

时间:2013-06-30 09:22:08

标签: ruby chef provisioning vagrant chef-solo

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

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

有没有办法调试特定食谱?甚至来自虚拟机shell。

我已经看到chef-shell存在(http://docs.opscode.com/chef_shell.html),当我进入虚拟机时我可以启动它(它可以工作),但我无法理解如何加载我的食谱和测试它们。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:8)

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

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

例如

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

答案 2 :(得分:5)

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

 Vagrant.configure("2") do |config|
    # ...
    config.vm.provision :chef_solo do |chef|
      chef.arguments = '-l debug'
      # ...
    end
 end

答案 3 :(得分:4)

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

它看起来有点像here

  • 您需要食谱目录
  • 您需要一个.json文件,其中包含位于Vagrantfile中chef.json的所有数据
  • 你需要一个包装器/启动ruby脚本,如上面的帖子。

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