加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:33:28 所属栏目:百科 来源:网络整理
导读:我正在使用第三方模块,该模块使用 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.
我正在使用第三方模块,该模块使用 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版本.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读