Chef - 在其他资源失败时运行资源

时间:2016-02-23 06:17:47

标签: ruby chef chef-recipe

我有两个名为executecommand_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 (如果厨师有这个会很好)?

1 个答案:

答案 0 :(得分:3)

您最好的选择是首先输入command_2,然后通过检查是否需要运行来保护它。我不确定那个命令是做什么的,但如果有可能以某种方式验证它是否需要,那么你可以这样做。

如果无法验证是否需要command_2,那么你可以这样做:

touch /tmp/successful

这将运行command_1,如果成功,它将/tmp/successful。然后command_2将运行,但仅当file不存在时才会运行。如果command_2运行,它将立即通知command_1再次运行。要清理下次运行,我们会添加/tmp/successful资源以确保删除visible