Puppet 2.7 确保在 Master 上更新 puppet:///file 时客户端上的文件也更新

Puppet 2.7 确保在 Master 上更新 puppet:///file 时客户端上的文件也更新

我有一个 Perl 脚本,我将其推送到所有 Puppet Linux 客户端。此后,我在 Puppet 主服务器上编辑了我的脚本 module/modulename/files/scripts/a_script 脚本,但客户端没有收到更改,因为它们有该文件。显然它没有校验和或使用 modtime。确保文件与主版本保持同步的最佳做法是什么?我需要编写校验和逻辑吗,还是已经有内置功能了?

我最初推送的代码是:

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

显然,删除文件然后将其拉回来是一种不明智的解决方案,我希望能找到更有效的办法。

更新 Puppet 会在下次运行时对 puppet:/// filebucket 中的文件进行校验和并同步,我肯定遇到了错误,导致文件声明无法运行。当我将声明移至 site.pp 时,它确实将更改同步到客户端上已经存在的文件。

答案1

我建议使用平面目录结构来提供脚本,puppet:///modulename/a_script例如puppet:///modulename/scripts/a_script

但如果这不是一个选择,这听起来像是recurse指示。如果没有它,默认操作似乎只会确保您的文件存在,而不考虑内容。

另请查看Puppet 文件类型参考

- 编辑 -

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

对于你的情况,Puppet 默认为replace => true关于文件类型如果源校验和发生变化。

您在客户端系统上的puppet agent -t输出是什么?puppet agent --debug -t

相关内容