Chef infra 如何确定目录中的任何文件是否已更改

Chef infra 如何确定目录中的任何文件是否已更改,chef-infra,Chef Infra,Chef是否有办法确定它是否更改了给定目录中的任何文件?如果conf.d目录中的任何设置被更新,我想重新启动服务器进程 我确信在每次chef客户端运行时都可以将md5sums列表写入一个文件,并将当前迭代与以前的迭代进行比较。但这是一段相当多的代码,可以解决一个常见的场景。有更好的方法吗?您可以从软件包中使用inotifywait实用程序Chef提供了一个名为的概念 这允许您定义一个资源中的更改触发另一个资源的执行。上述在配置文件更改后重新启动服务可能是最常见的用例 template”/etc/

Chef是否有办法确定它是否更改了给定目录中的任何文件?如果conf.d目录中的任何设置被更新,我想重新启动服务器进程


我确信在每次chef客户端运行时都可以将md5sums列表写入一个文件,并将当前迭代与以前的迭代进行比较。但这是一段相当多的代码,可以解决一个常见的场景。有更好的方法吗?

您可以从软件包中使用inotifywait实用程序

Chef提供了一个名为的概念

这允许您定义一个资源中的更改触发另一个资源的执行。上述在配置文件更改后重新启动服务可能是最常见的用例

template”/etc/foo/conf.d/example.conf“do
通知:重新启动,“服务[foo]”
终止
服务“foo”do
支持:重新启动=>true,:重新加载=>true
操作:启用
终止
默认情况下,通知是延迟的,这意味着它们是在Chef运行结束时触发的。这有助于您避免每次更改配置文件都重新启动一次服务。如果需要立即通知,请使用

通知:重新启动,“服务[foo],:立即

当然,您不仅可以对服务使用厨师长通知,还可以对任何资源使用厨师长通知。更多例子见。

你知道吗?@StephenKing-nope,这看起来很完美。如果你把它作为问题的答案,我会接受的。很高兴我能帮上忙。抱歉延迟(通知没有延迟,只有空闲时间:-)抱歉,chef是一个配置管理系统。使用inotify将与至少作为厨师用户的我所希望的相矛盾。