我从主厨IRC的代码陌生人那里得到了一些很好的指导,但我并不想进一步欺骗他,但这是我的问题:
我的目标是运行食谱一,然后运行两个,然后重新启动,同时保持厨师运行,然后执行食谱三。我想我已经关闭但仍然遇到错误。我不确定它是我的代码块还是Windows的行为方式。
这是我的代码块:
ruby_block "test" do
block do
run_context.include_recipe "stuff::reboot"
while reboot_pending? == true do
run_context.include_recipe "stuff::three"
end
end
end
该块执行没有问题,但它似乎很快就移动到stuff :: three recipe导致此错误,因为PowerShell不可用,因为机器仍在启动:
==> default: The argument 'c:/tmp/vagrant-elevated-shell.ps1' to the -File parameter does not exist. Provide the path to an existing '.ps1' file as an argument to the -File parameter.
我认为一旦发出reboot命令,几秒钟后就不再有挂起的重启了。那么,是否有一个不同的红宝石助手可以使用我的同时?或者这块只是废话?
答案 0 :(得分:2)
Sooooo我也在这里回答了很多问题。谢谢你的想法。
你一直试图把include_recipe
放在while循环的主体中,这不是你想要的我想不到的。这表示“在重启正在等待时反复包含此内容”。
你想要的是这个:
include_recipe 'stuff::reboot'
ruby_block 'wait for reboot' do
block do
true while reboot_pending?
end
end
include_recipe 'stuff::three'
如果重启正在等待,那么会在两个配方中的东西之间放置一个资源来停止收敛,否则它会继续。