Chef:根据`execute`结果失败通知

时间:2014-03-28 18:22:57

标签: chef

每次厨师客户端在我的应用主机上运行时,我都不想运行bundle install我有一个bundle check执行资源,如果捆绑检查失败,会通知bundle install资源< / p>

execute "bundle_check" do 
  cwd node[:app][:install_dir]
  user "foo"
  command 'bundle check'
  action :run
  returns [1]
  notifies :run, "execute[bundle_install]", :immediately
  ignore_failure true
end

我设置了ignore_failure true属性,但我想知道是否有一种方法可以根据返回值配置notifies属性进行通知。基本上我不希望将bundle check的返回值视为失败,而我只想通知该值是否为1.

2 个答案:

答案 0 :(得分:3)

您正在考虑错误的通知。在这种情况下,您真正​​想要的是安装资源上的Resource Guard

command 'bundle install' do
  # ... existing parameters
  not_if 'bundle check'
end

如果bundle install失败(返回非零),这将执行shell保护,然后只运行bundle check命令。

答案 1 :(得分:1)

使用execute[bundle install]保护not_if

# install gem dependencies
execute 'bundle install' do
  command "bundle install --deployment --without development test"
  cwd node[:app][:install_dir]
  not_if 'bundle check', :cwd => node[:app][:install_dir]
  # ...
end

请注意, :cwd => node[:app][:install_dir]非常重要