首先,我知道关于此错误有很多问题,我已经检查了所有问题,但是我的解决方案无法使用任何解决方案来解决。
我是第一次使用Puppet / Ruby并遇到以下问题。
我创建了这个功能:
module Puppet::Parser::Functions
newfunction(:phpversion, :type => :rvalue) do
%x["/usr/bin/php -r 'echo PHP_MAJOR_VERSION . \".\" . PHP_MINOR_VERSION;'"]
end
end
当我在清单文件中使用以下命令调用它时:
$phpversion = phpversion()
当我执行代理程序时,它会引发错误“Error: Could not retrieve catalog from remote server: Error 400 on SERVER: wrong number of arguments (1 for 0) at /etc/puppetlabs/puppet/modules/x/manifests/somefile.pp:123 on node foo.example.bar"
我尝试|args|
在do
语句后添加并删除,:type
但始终抛出相同的错误。当我使用$phpversion = phpversion
它时,只是认为它是文本字符串而不是函数(这是我期望的,但无论如何都尝试过)。
任何帮助将不胜感激。
如果您试图获取php的版本,实际上可能更容易做到这一点:
Facter.add(:phpversion) do
setcode do
if Facter::Util::Resolution.which('php')
Facter::Util::Resolution.exec('/usr/bin/php -r 'echo PHP_MAJOR_VERSION . \".\" . PHP_MINOR_VERSION;'"').lines.first.split(/"/)[1].strip
end
end
end
将此目录lib/facter/
放在您的模块中,然后在清单中将其引用为$::phpversion
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句