【问题标题】:How do I copy a directory as well containing files with Puppet如何使用 Puppet 复制包含文件的目录
【发布时间】:2021-01-18 18:58:40
【问题描述】:

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

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

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

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

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

提前致谢

【问题讨论】:

    标签: puppet


    【解决方案1】:

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

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

    File {
      replace => false,
    }
    

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

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

    【讨论】:

    • ... 并且 OP 可以通过在其 file 资源中明确指定 replace => true 来覆盖此类资源默认值。
    • 这是正确答案,应注意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多