ruby - 如果源模板更改,则执行 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_if
或only_if
声明?
解决方案
如果您将在同一个配方中定义您的资源,那么在我看来,您可以避免所有的通知链接。
回到你的问题,听起来设置action :create
,这是默认操作,可以解决问题。来自模板资源文档
动作:创建
创建一个文件。如果文件已存在(但不匹配),则更新该文件以匹配。
推荐阅读
- python - 在 PyTorch 中使用带有自调整优化器的调度程序
- python - 如何对数据框列上的多个短语应用正则表达式?
- java - 如何循环问题直到从扫描仪获得答案?
- ios - 应用程序在核心数据中崩溃,但无法找到崩溃的位置
- python - 如何提取网页中嵌入的视频链接名称以及视频名称
- flutter - 如何:阻止 ListView 重建 video_player 小部件?
- python - 为什么我的 python 程序找不到模块?
- python - 使用 Vue.js 在客户端运行 python 脚本
- r - 如何通过R中的第一个所需符号拆分字符串向量?
- python - 在 Pycharm 中找不到 RStudio 中安装的 R 包