【问题标题】:Puppet computing hash of (massive) unmanaged files(大量)非托管文件的木偶计算哈希
【发布时间】:2017-12-14 20:06:09
【问题描述】:

我正在使用将 managehome 设置为 true 的 puppet 管理用户。然后这个主目录会填充一些文件(在我的例子中是 2 个点文件)。

user { 'guillaume':
  ensure     => present,
  managehome => true,
}

file {'/home/guillaume':
  ensure  => present,
  purge   => false,
  recurse => true,
  source  => "puppet:///modules/${module_name}/home/${title}",
}

一切都很好,花花公子,但我最终在我的主目录中放置了一个 25GB 的文件,该 puppet 正在计算一个哈希值(至少这是我的理解。我可以从 strace 中看到该文件确实已完全读取通过木偶)。一个完整的木偶运行大约需要 20 分钟,理论上应该在不到一分钟的时间内完成。删除文件让 puppet 再次快速运行,证实了我的猜测。

为什么 puppet 会计算非托管文件的哈希值,如何通过将这样的(合法)文件放在托管目录中来防止破坏 puppet?

【问题讨论】:

    标签: puppet


    【解决方案1】:

    Puppet 计算主目录中文件的校验和的原因是因为您正在递归地管理整个目录的内容,并且该文件是目录内容的一部分。有几种方法可以改进 Puppet 资源以避免计算此校验和。

    第一种是直接管理两个隐藏文件:

    user { 'guillaume':
      ensure     => present,
      managehome => true,
    }
    
    file {'/home/guillaume/.file_one':
      ensure  => file,
      source  => "puppet:///modules/${module_name}/home/.file_one",
      require => User['guillaume'],
    }
    file {'/home/guillaume/.file_two':
      ensure  => file,
      source  => "puppet:///modules/${module_name}/home/.file_two",
      require => User['guillaume'],
    }
    

    请注意,上面我还修复了file 资源上未指定的ensure 值以及user 资源上file 资源缺少的依赖元参数。

    第二种解决方案是不递归管理目录的内容,因此忽略目录内容中未被source 属性管理的文件。您可以通过将recurse 属性设置为remote 来实现:

    user { 'guillaume':
      ensure     => present,
      managehome => true,
    }
    
    file {'/home/guillaume':
      ensure  => directory,
      recurse => remote,
      source  => "puppet:///modules/${module_name}/home/guillaume",
      require => User['guillaume'],
    }
    

    请注意,这与上述解决方案相同。

    一些有用的文档:
    https://puppet.com/docs/puppet/5.3/types/file.html
    https://puppet.com/docs/puppet/5.3/metaparameter.html#require

    【讨论】:

    • require 被排除在外,因为它与我的问题无关,但您的第二个选项 (recurse => remote) 正是我想要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-12-18
    • 2017-11-02
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多