如何使用 Puppet 复制包含文件的目录

问题描述

我正在寻找使用 Puppet 复制其文件的目录。 该目录以及大多数文件/子目录在复制时已经存在。

该副本适用于新文件删除不在源文件中的文件,但现有文件没有被更新。

例如,如果 dir/index.html 不存在,则会创建它,但即使源包含文件的更新版本也不会更新。

寻求有关如何告诉 puppet 复制/覆盖目录中所有文件的帮助。不确定我是否应该使用 force 之类的东西来实现这一点。

    file { "${directory}":
        ensure  => directory,owner   => $user,group   => "$user",mode    => '0755',recurse => true,source  => "puppet:///modules/role/${directory}",} ->

提前致谢

解决方法

根据documentation for the file resource,您的配置是正确的,应该替换与源不匹配的文件。此行为是通过将 recurse 设置为 true 来配置的。

我注意到 force 选项仅适用于目录。它是适用于文件的 replace 属性。鉴于文件没有被替换,是否有可能将 replace => false 设置为清单中某处文件资源的默认属性?默认设置看起来像

File {
  replace => false,}

正如 John 在评论中提到的,您可以通过在文件资源中显式设置 replace 来覆盖默认值:

file { $directory:
        ensure  => directory,owner   => $user,group   => $user,mode    => '0755',recurse => true,replace => true,source  => "puppet:///modules/role/${directory}",}