我正在为一个流浪盒子的厨师食谱而苦苦挣扎。我正在使用厨师独奏。
我对 Ruby 不太满意(我以前从未使用过它),所以如果我vagrant provision
每次都必须这样做,那么编写我的食谱的过程会很长。
有没有办法调试特定的配方?甚至从虚拟机外壳。
我已经看到它chef-shell
存在(http://docs.opscode.com/chef_shell.html),当我在虚拟机中时我可以启动它(它可以工作),但我不明白如何加载我的食谱并对其进行测试。
我正在为一个流浪盒子的厨师食谱而苦苦挣扎。我正在使用厨师独奏。
我对 Ruby 不太满意(我以前从未使用过它),所以如果我vagrant provision
每次都必须这样做,那么编写我的食谱的过程会很长。
有没有办法调试特定的配方?甚至从虚拟机外壳。
我已经看到它chef-shell
存在(http://docs.opscode.com/chef_shell.html),当我在虚拟机中时我可以启动它(它可以工作),但我不明白如何加载我的食谱并对其进行测试。
在当前 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
除了上面的输入,这是非常好的;-)
在调试chef-solo
模式下运行(启用调试输出)肯定会有所帮助。
例如
chef-solo -c solo.rb -j node.json -l debug
如果您在 Vagrant 中运行 chef-solo,则可以从 Vagrantfile 中注入额外的自定义参数(用于日志记录/调试),如下所示:
Vagrant.configure("2") do |config|
# ...
config.vm.provision :chef_solo do |chef|
chef.arguments = '-l debug'
# ...
end
end
您可以直接从 VM 内的 shell 使用 chef-solo,但这需要与 vagrant 不同的文件结构。
它看起来有点像这里所做的:
chef.json
Vagrantfile中的所有数据一般来说,尝试搜索在没有 Vagrant 的情况下解释 chef-solo 的教程。