为什么升级到Puppet4后,自定义事实无法找到' rb_sysopen ' ?



以下自定义事实:

# returns latest packerversion, e.g. 0.10.1
Facter.add("latest_packerversion") do
  setcode do
    url="https://www.packer.io/downloads.html"
    file = open("#{url}")
    contents = file.read()
    match = contents.match(/Latestsversion:s(.*)</)
    match[1]
  end
end

使用傀儡3.6.2时可以工作,但自从升级到4.5.2后,出现了以下问题:

Error: Facter: error while resolving custom fact "latest_packerversion":
No such file or directory @ rb_sysopen - https://www.packer.io/downloads.html
分析

  • 自从升级到Puppet 4后,rb_sysopen似乎因为某些原因(No such file or directory @ rb_sysopen)找不到了。
  • Puppet4似乎使用嵌入式ruby版本而不是安装在主机上的版本(Puppet3):

Puppet 4, Facter 2.4和CFacter 0.4,最新的Hiera和Mcollective,还有Ruby 2.1.5, OpenSSL 1.0.0r和我们的gem依赖关系。

    rb_sysopen在Ruby 2.1.5中不存在吗?没有发现任何证据。
  • 可能是发生了与事实相关的变化导致了这个问题?在发行说明中未发现相关内容。

为什么自从升级到Puppet4以来,rb_sysopen不再被自定义事实所发现?

简练

我将包括require 'open-uri'在这两个事实,但我不明白为什么这是必需的,因为升级到Puppet4

详细

一旦require 'open-uri'包含在一个自定义事实中,问题就解决了。

# returns latest gitversion, e.g. 2.8.2
Facter.add("latest_gitversion") do
  setcode do
require 'open-uri'
    url="https://git-scm.com/downloads"
    file = open("#{url}")
    contents = file.read()
    match = contents.match(/RelNotes.*((d.){2}d)/)
    match[1]
  end
end

一旦require 'open-uri'被注释掉,问题就会再次出现:

Error: Facter: error while resolving custom fact "latest_gitversion": No such file or directory @ rb_sysopen - https://git-scm.com/downloads
Error: Facter: error while resolving custom fact "latest_packerversion": No such file or directory @ rb_sysopen - https://www.packer.io/downloads.html

目前还不清楚是什么原因导致了这个问题。

相关内容

  • 没有找到相关文章

最新更新