如果源模板发生更改,要执行的厨师模板资源?

时间:2018-11-16 22:20:21

标签: ruby chef cookbook

我正在部署一个软件包,该软件包要求每次解压缩目录时都在指定的目录中创建模板。

一个remote_file通知我的解压缩操作,该解压缩操作通知模板资源,模板资源又通知其他资源。此通知链按预期工作。

以下是我的模板资源:

template 'C:\\Program Files\\MyProgram\\program.yml' do
  source "my_program-#{node['program']['version']}.yml.erb"
  action   :nothing
  notifies :run, 'powershell_script[install-program]', :immediately
end

我的问题:如果对源模板进行更改,是否有办法执行template资源?现在,只有在我的解压缩操作通知(由于我的template通知)时,它才会执行action :nothing资源。

但是,最好有一种方法可以告诉它模板本身是否已更改。也许是某种not_ifonly_if语句?

1 个答案:

答案 0 :(得分:0)

对我来说,如果将资源定义在同一配方中,则可以避免所有通知链接。

回到您的问题,听起来action :create(这是默认操作)可以解决问题。来自template resource documentation

  

action:创建

     

创建一个文件。如果文件已经存在(但不匹配),请更新该文件以使其匹配。