我在使用chef-solo为vagrant box制作菜谱时遇到了困难。
由于我从未使用过Ruby,因此如果每次都要执行vagrant provision
,编写菜谱的过程将非常漫长。
是否有一种方法可以调试特定的菜谱?甚至可以从虚拟机shell中进行。
我看到了 chef-shell
的存在 (http://docs.opscode.com/chef_shell.html) ,并且当我在虚拟机内部时,我可以启动它(它有效),但我不知道如何加载和测试我的菜谱。
我在使用chef-solo为vagrant box制作菜谱时遇到了困难。
由于我从未使用过Ruby,因此如果每次都要执行vagrant provision
,编写菜谱的过程将非常漫长。
是否有一种方法可以调试特定的菜谱?甚至可以从虚拟机shell中进行。
我看到了 chef-shell
的存在 (http://docs.opscode.com/chef_shell.html) ,并且当我在虚拟机内部时,我可以启动它(它有效),但我不知道如何加载和测试我的菜谱。
在当前的vagrant chef provisioner中启用调试输出的正确方法是使用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