Puppet 木偶:无法备份<;文件>;:已通过sum的新内容

Puppet 木偶:无法备份<;文件>;:已通过sum的新内容,puppet,Puppet,我有一个问题,我希望有人能回答。基本上,我所做的是确保我总是使用一个固定的、稍微旧一点的phpunit版本,我把它放在模块的文件资源中 舱单: file { "/usr/bin/phpunit": ensure => file, owner => 'root', group => 'root', mode => 0755,

我有一个问题,我希望有人能回答。基本上,我所做的是确保我总是使用一个固定的、稍微旧一点的phpunit版本,我把它放在模块的文件资源中

舱单:

    file
    {
            "/usr/bin/phpunit":
            ensure => file,
            owner => 'root',
            group => 'root',
            mode => 0755,
            source => "puppet:///modules/php/phpunit"
    }
准备:我下载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
注意:3.06秒内编译环境内生产目录
注意:/Stage[main]/Php/File[/usr/bin/phpunit]/content:content将“{md5}9f61f732829f4f9e3d31e56613f1a93a”更改为“{md}38789acbf53196e20e9b89e065cbed94”
注意:/Stage[main]/Httpd/Service[Httpd]:从1个事件触发“刷新”
注意:完成的目录运行时间为15.86秒
然后我下载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
注意:在2.96秒内完成环境内生产的编译目录
错误:无法备份/usr/bin/phpunit:传递了sum{md5}9f61f732829f4f9e3d31e56613f1a93a的新内容
错误:无法备份/usr/bin/phpunit:传递了sum{md5}9f61f732829f4f9e3d31e56613f1a93a的新内容
错误:/Stage[main]/Php/File[/usr/bin/phpunit]/content:从{md5}9f61f732829f4f9e3d31e56613f1a93a更改为{md5}387899acbf53196e20e9b89e065cbed94失败:无法备份/usr/bin/phpunit:已传递给sum{md5}9f61f732829f9f9e3e3e31e56613f1a93a的新内容
有什么好处?如果我从文件bucket中删除文件(/var/lib/puppet/clientbucket/9/f/6/1/f/7/3/2/9F61F73829F4F9E3D31E56613F1A93A/),它将再次工作。。。下一次跑步,但不是下一次

我做错了什么


如果您有任何意见,我将不胜感激。

作为一种解决方法,您可以在文件资源中设置
backup=>false
。当然,这有点不安全。

除了升级之外,没有其他解决方案,因为某些版本的puppet中存在错误,其中包含UTF8和二进制字符的文件被错误处理,并导致错误消息

我用作解决方法的可笑的过于复杂的解决方案是在文件资源中有一个.tar文件,它通知exec,exec卸载并将实际的可执行文件放在正确的目录中,确保后者的时间戳比前者新


这远非理想,但在我这样的情况下,将puppet升级到最新版本并不是一个吸引人的选择。

我通过删除客户端节点上的
/var/lib/puppet/clientbucket
解决了同样的问题


此节点已耗尽磁盘空间,因此puppet可能错误地将空文件存储在那里。

也出现此错误。我结合前面的两个答案解决了这个问题

首先,我必须通过运行以下命令删除客户端节点上的/var/lib/puppet/clientbucket:

sudo rm -r /var/lib/puppet/clientbucket
这样做只会让它再次运行

然后,我必须将backup=>false标记为停止它重新创建文件,遗漏了任何一个无法为我解决问题的步骤。公认的答案是不正确的,说有

“除了升级,没有其他解决方案”


但是下载的文件是否与最终出现在filebucket中的文件相同?如果是这样的话,这个错误似乎没有意义。这可能是一个错误。这是puppet某些版本中的一个错误:…看起来不相关(在使用
内容
而不是
源代码
等时发生)。我确实尝试了备份=>错误,没有任何区别。这可能不是正确的答案。PUP-1038适用于使用
content=>
参数的舱单,而不是上述问题中使用的
source=>
参数。PUP-1038说“如果使用‘源’参数而不是‘内容’参数……清单可以成功应用”。