如果以前的代码块成功,则执行Chef配方代码

时间:2016-08-06 18:25:58

标签: ruby chef

我希望第二个代码仅在第一个代码返回0状态(成功)时执行。

execute 'make dir' do
   command 'mkdir foo'
   action :run
end
execute 'make dir2' do
 command 'mkdir bar'
 action :run
end

1 个答案:

答案 0 :(得分:0)

首先,您应该使用本机Chef资源来创建目录。应该尽可能避免脱壳,因为它会绕过厨师的幂等性以及其他问题。

其次,如果您的第一个资源失败,那么chef-client将退出,因此后续资源显然无法完成,除非您添加一个属性来忽略该资源的失败。

但是,这可能是你想要的:

directory 'bar' do
  action :nothing
end

directory 'foo' do
  action :create
  notifies :create, 'directory[dir2]', :immediately
  ignore_failure true
end