puppet fileserver分发二进制文件

时间:2016-02-04 22:59:12

标签: puppet fileserver

嗯,问题并不新鲜,但我仍然无法找到任何好的解决方案。 我通过puppet文件服务器分发二进制文件100-300mb文件,但是在性能方面它确实很糟糕我确定因为md5检查。现在我有超过100台服务器,我的木偶大师很难管理所有md5计算检查。在puppet 3.x中,文件{}的校验和不起作用。我无法更新到puppet 4.x,我没有机会改变流量。文件应来自puppet fileserver。 所以我无法相信没有固定校验和选项的自定义文件类型,但我无法找到它:( 或者也许有任何其他方式从puppet文件服务器下载文件? 请任何建议都会有所帮助! rsync或打包为本机包不可能的选项。

1 个答案:

答案 0 :(得分:3)

假设在管理大型文件时使用默认校验和算法(MD5)确实会对性能产生重大影响,这确实是合理的。 File resource有一个checksum attribute,可以用来指定Puppet支持的替代校验和算法(其中一些实际上不是校验和本身),但是it was buggy in many versions of Puppet 3。目前,Puppet 4中实现的修复程序似乎没有向后移植到Puppet 3系列。

如果您只需要分发文件,并且不关心以后更新文件或通过Puppet保持其一致性,那么您可以考虑完全关闭校验和。这可能看起来像这样:

file { '/path/to/bigfile.bin':
  ensure   => 'file',
  source   => 'puppet:///modules/mymodule/bigfile.bin',
  owner    => 'root',
  group    => 'root',
  mode     => '0644',
  checksum => 'none',
  replace  => false
}

但是,如果您确实想要管理现有文件,那么Puppet需要一种方法来确定节点上已存在的文件是否是最新的。这是校验和的两个主要目的之一。如果你坚持通过Puppet文件服务器分发文件,并且你被困在Puppet 3上,那么我担心你的运气不足以减轻负担。 Puppet的文件服务器与File资源类型紧密集成,并非用于一般用途。据我所知,没有第三方资源类型可以利用它。在任何情况下,文件服务器本身都是导致File checksum参数不起作用的主要原因 - 错误版本不执行MD5以外的任何类型的校验和。 / p>

作为替代方案,您可以考虑将大文件打包为系统的本机打包格式,将其放入内部软件包存储库,然后管理软件包(通过Package资源)而不是管理直接的文件。这确实远离了通过文件服务器分发它,但这非常重要。