Puppet 代理升级到 6.26 中断函数版本 cmp()

Puppet agent upgrade to 6.26 breaks function versioncmp()

最近我在 puppetserver 上将 puppet 代理从 6.25 升级到 6.26,似乎升级后所有连接到 puppetserver 的代理都无法应用更改,这是由于 versioncmp() 内置函数引起的内部服务器错误。

继续前进的快速解决方法是将服务器上的 Puppet 代理降级到 6.25

错误:

Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Function Call, wrong number of arguments (given 3, expected 2)

有人设法找到它的问题所在,以及 versioncmp 是如何更改成它看到 3 个参数的?

注意:该功能之前运行良好,我没有更改代码中的任何内容。

非常感谢

错误消息说您的清单之一试图将三个参数传递给 built-in versioncmp() 函数,该函数只接受两个参数(而且从未接受过更多)。该消息很可能是正确的,从 Puppet 6.25 到 6.26 的变化是后者现在在传递错误数量的参数时无法进行目录编译,而前者则没有。您可能会在之前的目录编译器日志中看到警告。

那么,很可能正确的解决方案是找到错误的函数调用并修复它。当然,无论如何,找到 Puppet 抱怨的函数调用是继续前进的关键。

详情请见https://tickets.puppetlabs.com/browse/PA-4189。您需要确保 puppetserver 软件包也已更新。