如果在相同版本上,厨师不会运行

时间:2016-08-08 10:15:14

标签: chef

我有一本从源码安装软件包的食谱。版本是1.0.0,当我运行chef-client时,cookbook会自行安装。我不希望这种情况发生。如果未安装食谱或版本已更改,我只希望此烹饪书运行,例如1.0.1。

我怎样才能实现这一目标?

由于

1 个答案:

答案 0 :(得分:0)

这不是厨师的工作方式。如果菜谱包含在运行列表中,则始终执行该菜谱。

然而,这不是问题,只要您的食谱是幂等的(只改变不符合预期状态的食物)。

编辑:为了使您的代码具有幂等性,这是一个使用guards的小教程:

假设您拥有以下资源,该资源将名为xyz的软件安装到/usr/local/xyz-1.0.0(版本1.0.0):

execute "compile-xyz" do
  command "./configure && make && make install"
  pwd node['xyz']['download_path']
end

您可以通过添加not_if参数检查是否存在/usr/local/xyz-1.0.0来阻止此操作:

execute "compile-xyz" do
  command "./configure && make && make install"
  pwd node['xyz']['download_path']
  not_if do ::File.directory?("/usr/local/xyz-#{node['xyz']['version']}/") end
end