首页 > 解决方案 > 如果源模板更改,则执行 Chef 模板资源?

问题描述

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

Aremote_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我的解压缩操作通知时才执行资源(由于 my action :nothing)。

但是,如果有一种方法可以判断模板本身是否已更改,那就太好了。也许某种not_ifonly_if声明?

标签: rubychef-infracookbook

解决方案


如果您将在同一个配方中定义您的资源,那么在我看来,您可以避免所有的通知链接。

回到你的问题,听起来设置action :create,这是默认操作,可以解决问题。来自模板资源文档

动作:创建

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


推荐阅读