puppet:无法备份<file>:已传递sum </file>的新内容

时间:2015-04-09 14:12:30

标签: puppet

我有一个问题,我希望有人可能有答案。基本上我正在做的是尝试确保我总是使用一个固定的,稍微旧版本的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

然后我下载当前(仍然'错误')的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

是什么给出的?如果我从我的filebucket中删除文件(/ var / lib / puppet / clientbucket / 9 / f / 6/1 / f / 7/3/2 / 9f61f732829f4f9e3d31e56613f1a93a /),它将再次运行...用于下一次运行,但是不是那之后的那个。

我做错了什么?

我很感激任何意见和提前感谢。

4 个答案:

答案 0 :(得分:2)

也有这个错误。我结合前两个答案解决了这个问题。

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

{{1}}

这样做只会让它再次运行。

然后我必须标记backup =&gt; false以阻止它重新创建文件,错过任何一步都无法为我解决它。接受的答案是错误的,说有

  

&#34;除了升级之外没有解决方案&#34;。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

https://tickets.puppetlabs.com/browse/PUP-1038

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

它远非理想,但它适用于像我这样的情况,将木偶升级到最新版本并不具备吸引力。

答案 3 :(得分:0)

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

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