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

How do I copy a directory as well containing files with Puppet

我想使用 Puppet 复制目录及其文件。 该目录以及大多数 files/subdirectories 在复制时已经存在。

副本正在为新文件工作并删除不在源中的文件,但现有文件没有更新。

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

正在寻求有关如何告诉 puppet copy/overwrite 目录中所有文件的帮助。不确定我是否应该使用 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}",
    }