Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Puppet 傀儡文件服务器分发二进制文件_Puppet_Fileserver - Fatal编程技术网

Puppet 傀儡文件服务器分发二进制文件

Puppet 傀儡文件服务器分发二进制文件,puppet,fileserver,Puppet,Fileserver,这个问题并不新鲜,但我仍然找不到任何好的解决办法。 我通过puppet文件服务器分发了100-300mb的二进制文件,但由于md5检查,在性能方面效果肯定很差。现在我有100多台服务器,我的puppet master非常努力地管理所有md5计算检查。在puppet 3.x中,文件{}的校验和不起作用。我无法更新到puppet 4.x,也没有机会更改流程。文件应该来自puppet文件服务器。 所以我不敢相信没有固定校验和选项的自定义文件类型,但我找不到它:( 或者有没有其他方法可以从puppet文

这个问题并不新鲜,但我仍然找不到任何好的解决办法。 我通过puppet文件服务器分发了100-300mb的二进制文件,但由于md5检查,在性能方面效果肯定很差。现在我有100多台服务器,我的puppet master非常努力地管理所有md5计算检查。在puppet 3.x中,文件{}的校验和不起作用。我无法更新到puppet 4.x,也没有机会更改流程。文件应该来自puppet文件服务器。 所以我不敢相信没有固定校验和选项的自定义文件类型,但我找不到它:( 或者有没有其他方法可以从puppet文件服务器下载文件? 任何建议都会有帮助!
rsync或pack作为本机软件包对我来说是不可能的选择。

在管理大型文件时使用默认校验和算法(MD5)将对性能产生重大影响,这确实是合理的。有一个可用于指定Puppet支持的校验和算法中的替代算法的(其中一些实际上不是校验和本身),但是,此时,在Puppet 4中实现的修复程序似乎没有被后移植到Puppet 3系列

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

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的文件服务器与文件资源类型紧密集成,不用于一般用途。据我所知,没有第三方资源类型利用它。在任何情况下,文件服务器本身都是造成
文件
校验和
pa问题的主要原因rameter不工作——有缺陷的版本不执行MD5以外的任何类型的校验和


作为一种选择,您可以考虑将您的大文件打包在系统的本地封装格式中,将其放入内部包存储库,并管理包(通过<代码>包< /代码>资源)。而不是直接管理文件。这确实可以避免通过文件服务器分发文件,但这正是重点。

感谢您的回复!是的……我关注了PUP-1208问题一段时间:),但不知道它是后端口到puppet 3.x的。我尝试了3.8.5,但它的工作原理与3.5.x不同,我是指md5lite或sha,甚至是ctime或mtime。在我的情况下,我确实关心文件的最新状态,所以对我来说mtime应该完全足够,但它不起作用:(顺便说一句,我坚持使用3.x puppet,因为我们经常使用Foreman项目,但它仍然不支持Puppet4。也许应该试试puppetDB…@RomanIuvshin,我写道,对PUP-1208的修复还没有进行后端口,所以听到v3.8.5表现出与v3.5相同的错误行为,我并不感到惊讶。至于puppetDB,我不太明白你希望看到什么。)在这种情况下,您可以随意选择。如果您需要继续使用Puppet 3而不使用MD5,那么您可能需要远离Puppet文件服务器。我的建议是使用包,这是一个非常简单的选择,但是还有其他选择。哦,我现在明白了。感谢您的澄清!