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

如何使用Puppet复制包含文件的目录,puppet,Puppet,我期待着复制一个目录及其文件使用木偶。 该目录以及大多数文件/子目录在复制时都已存在 副本正在处理新文件并删除源中不存在的文件,但现有文件不会更新 例如,如果文件不存在,dir/index.html将被创建,但即使源文件包含文件的更新版本,也不会被更新 正在寻求有关如何告诉puppet复制/覆盖目录中所有文件的帮助。我不确定我是否应该使用类似于force的方法来实现这一点 file { "${directory}": ensure => dir

我期待着复制一个目录及其文件使用木偶。 该目录以及大多数文件/子目录在复制时都已存在

副本正在处理新文件并删除源中不存在的文件,但现有文件不会更新

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

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

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

根据,您的配置是正确的,应该替换与源不匹配的文件。通过将
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}",
    }

... OP可以通过在其
文件
资源中显式指定
replace=>true
来覆盖这样的资源默认值。这是正确答案,应该注意。