我有两个名为execute
和command_1
的{{1}}资源。
如果command_2
失败,我想运行command_1
,然后重新运行command_2
。
非常像这样:
command_1
如何通过真正有用的东西替换execute 'command_1' do
command "ipa host-del #{machine_name}"
action :run
ignore_failure true
on_failure { notifies :run, 'execute['command_2']', :immediately }
end
execute 'command_2' do
command "ipa host-mod --certificate #{machine_name}"
action :nothing
notifies :run, 'execute['command_1']', :immediately
end
(如果厨师有这个会很好)?
答案 0 :(得分:3)
您最好的选择是首先输入command_2,然后通过检查是否需要运行来保护它。我不确定那个命令是做什么的,但如果有可能以某种方式验证它是否需要,那么你可以这样做。
如果无法验证是否需要command_2,那么你可以这样做:
touch /tmp/successful
这将运行command_1,如果成功,它将/tmp/successful
。然后command_2将运行,但仅当file
不存在时才会运行。如果command_2运行,它将立即通知command_1再次运行。要清理下次运行,我们会添加/tmp/successful
资源以确保删除visible