Chef 有没有办法确定它是否更改了给定目录中的任何文件?如果conf.d 目录中的任何设置被更新,我想重新启动服务器进程。
我确信可以在每次厨师客户端运行时将 md5sum 列表写入文件,并将当前迭代与之前的迭代进行比较。但这是解决常见场景的相当多的代码。有没有更好的办法?
Chef提供了一个概念,叫做通知.
这允许您定义一个资源的更改会触发另一资源的执行。所提到的配置文件更改后重新启动服务可能是最常见的用例。
template "/etc/foo/conf.d/example.conf" do
notifies :restart, "service[foo]"
end
service "foo" do
supports :restart => true, :reload => true
action :enable
end
默认情况下,通知是:delayed
,这意味着它们在 Chef 运行结束时被触发。这可以帮助您避免例如每个更改的配置文件都会重新启动一次服务。如果您想立即收到通知,请使用
notifies :restart, "service[foo]", :immediately
当然,您不仅可以将 Chef 的通知用于服务,还可以用于任何资源。更多示例在文档.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)