Puppet使用与配置版本不同的Ruby版本评估模块中的自定义函数

前端之家收集整理的这篇文章主要介绍了Puppet使用与配置版本不同的Ruby版本评估模块中的自定义函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用第三方模块,该模块使用 Ruby功能,直到2.1版才引入.我的运行时环境中的ruby版本是2.1.9:
Debug: Facter: fact "ruby" has resolved to {
  platform => "x86_64-linux",sitedir => "/opt/puppetlabs/puppet/lib/ruby/site_ruby/2.1.0",version => "2.1.9"
}.

所以理论上我应该没事.但是,当我运行木偶代理时,我得到了

Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Function Call,undefined method `to_h' for #<Array:0xc8fd201>

Array#to_h在Ruby 2.1.9上可用,因此这个错误意味着模块中的自定义函数正在使用2.1之前的Ruby版本进行评估,尽管我找不到它可能使用的任何其他Ruby版本.在版本2.4之前,我已经彻底清除了任何环境,只留下了Puppet内置的2.1.9版本.

这里发生了什么?

解决方法

发生了什么事情,虽然你的木偶代理有你找到的正确的ruby版本,但目录的实际编译发生在木偶主服务中.

在这种情况下,你的罪魁祸首;主人不使用普通ruby,它使用JRuby.即使在撰写本文(5.1.4)的绝对最新的puppetserver版本中,puppetserver使用的默认JRuby也是1.7.要切换到JRuby 9k并获得你期望的功能(请注意他们称之为“有点实验性”),请确保您的puppet master运行5.0或更高版本,然后change the environment variable as described in the docs运行更新的JRuby版本.

原文链接:https://www.f2er.com/ruby/271331.html

猜你在找的Ruby相关文章