puppet:无法备份 <file>:已通过总和的新内容
puppet: Could not back up <file>: Got passed new contents for sum
我有一个问题,希望有人能解答。本质上,我正在做的是尝试确保我始终使用固定的、稍旧版本的 phpunit,我已将其放入模块的文件资源中。
清单:
file
{
"/usr/bin/phpunit":
ensure => file,
owner => 'root',
group => 'root',
mode => 0755,
source => "puppet:///modules/php/phpunit"
}
准备:我下载当前('wrong')版本的phpunit并将其放置在/usr/bin。
所以第一个运行人偶成功了:
Notice: Compiled catalog for <hostname> in environment production in 3.06 seconds
Notice: /Stage[main]/Php/File[/usr/bin/phpunit]/content: content changed '{md5}9f61f732829f4f9e3d31e56613f1a93a' to '{md}38789acbf53196e20e9b89e065cbed94'
Notice: /Stage[main]/Httpd/Service[httpd]: Triggered 'refresh' from 1 events
Notice: Finished catalog run in 15.86 seconds
然后我下载当前(仍然是 'wrong')版本的 phpunit 并再次将其放入 /usr/bin。
这次人偶运行失败了。
Notice: Compiled catalog for <hostname> in environment production in 2.96 seconds
Error: Could not back up /usr/bin/phpunit: Got passed new contents for sum {md5}9f61f732829f4f9e3d31e56613f1a93a
Error: Could not back up /usr/bin/phpunit: Got passed new contents for sum {md5}9f61f732829f4f9e3d31e56613f1a93a
Error: /Stage[main]/Php/File[/usr/bin/phpunit]/content: change from {md5}9f61f732829f4f9e3d31e56613f1a93a to {md5}38789acbf53196e20e9b89e065cbed94 failed: Could not back up /usr/bin/phpunit: Got passed new contents for sum {md5}9f61f732829f4f9e3d31e56613f1a93a
什么给了?如果我从我的文件桶中删除文件 ( /var/lib/puppet/clientbucket/9/f/6/1/f/7/3/2/9f61f732829f4f9e3d31e56613f1a93a/ ),它将再次工作......对于下一个 运行,但不是之后的那个。
我做错了什么?
非常感谢任何意见,并提前致谢。
作为解决方法,您可以在文件资源中设置 backup => false
。当然,这有点不安全。
除了升级之外别无其他解决方案,因为某些版本的 puppet 中存在错误,错误地处理同时包含 UTF8 和二进制字符的文件,并导致出现错误消息。
https://tickets.puppetlabs.com/browse/PUP-1038
我用作解决方法的荒谬的过于复杂的解决方案是在文件资源中有一个 .tar 文件,它通知一个 exec 哪个 untars 并将实际的可执行文件放在正确的目录中,确保后者的时间戳比前者更新。
它远非理想,但它适用于像我这样的情况,将 puppet 升级到最新版本不是一个有吸引力的选择。
我能够通过删除客户端节点上的 /var/lib/puppet/clientbucket
来解决同样的问题。
此节点 运行 磁盘空间不足 space,因此 puppet 可能错误地将空文件存储在那里。
也遇到了这个错误。我结合前面两个答案解决了这个问题。
首先,我必须通过 运行ning 在客户端节点上删除 /var/lib/puppet/clientbucket:
sudo rm -r /var/lib/puppet/clientbucket
只是这样做只会让它运行再发生一次。
然后我不得不将备份标记为 => false 以阻止它重新创建文件,错过任何一步都无法为我解决问题。接受的答案是不正确的,说有
"no solution other than upgrading".