Puppet 2.7当puppet:///文件在主服务器上更新时,确保客户端上的文件更新

我有一个Perl脚本,我推送到我的所有木偶Linux客户端。 我已经编辑了我的脚本,模块/模块名/文件/脚本/脚本脚本在Puppet主,但客户端并没有得到改变,因为他们有文件。 显然它没有校验和或使用modtime。 确保文件与主版本保持一致的最佳做法是什么? 我是否需要编写校验和逻辑,还是已经内置了function?

我最初推动的代码是:

file { '/sbin/a_script': ensure => present, mode => 744, owner => root, source => "puppet:///modulename/scripts/a_script" } 

显然删除这个文件并把它拉回来是一个拙劣的解决scheme,我希望能有更多的口头expression。

更新 Puppet在下一次运行时在puppet:/// filebucket中执行校验和同步文件,我必须有一个错误导致文件声明不能运行。 当我将声明移到site.pp时,它将这些更改同步到客户端上已经存在的文件。

我build议从平面目录结构中提供脚本,例如puppet:///modulename/a_script而不是puppet:///modulename/scripts/a_script

但是,如果这不是一个选项,这听起来像是一个用于recurse指令的用例。 没有它,默认行为似乎只确保您的文件存在,而不考虑内容。

也检查出Puppet文件types参考 。

– 编辑 –

我以为你正在尝试同步脚本的目录。

对于你的情况,如果源校验和改变,Puppet默认在文件types上replace => true

在客户端系统上,来自puppet agent -t (或puppet agent --debug -t )的输出是什么?