Ruby 为什么自从升级到Puppet4后,自定义事实再也找不到“rb_sysopen”?
以下是: 分析Ruby 为什么自从升级到Puppet4后,自定义事实再也找不到“rb_sysopen”?,ruby,puppet,facter,Ruby,Puppet,Facter,以下是: 分析 自从升级到Puppet 4后,由于某种原因,rb\u sysopen似乎再也找不到了(没有这样的文件或目录@rb\u sysopen) Puppet4似乎使用嵌入式ruby版本,而不是安装在主机上的版本(Puppet3): Ruby 2.1.5中是否不存在rb_sysopen?没有发现任何证据 可能发生了与事实相关的变化,导致了问题?未发现任何相关信息 问题 为什么升级到Puppet4后,自定义事实无法再找到rb\u sysopen 我将在这两个事实中包括require
- 自从升级到Puppet 4后,由于某种原因,
似乎再也找不到了(rb\u sysopen
)没有这样的文件或目录@rb\u sysopen
- Puppet4似乎使用嵌入式ruby版本,而不是安装在主机上的版本(Puppet3):
- Ruby 2.1.5中是否不存在
?没有发现任何证据rb_sysopen
- 可能发生了与事实相关的变化,导致了问题?未发现任何相关信息
为什么升级到Puppet4后,自定义事实无法再找到
rb\u sysopen
我将在这两个事实中包括require'openuri'
,但我不明白为什么需要这样做,因为升级到了Puppet4
冗长
一旦require'openuri'
包含在一个自定义事实中,问题就解决了
# 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'openuri'
,问题就会再次出现:
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
目前还不清楚是什么导致了这个问题。简明 我将在这两个事实中包括
require'openuri'
,但我不明白为什么需要这样做,因为升级到了Puppet4
冗长
一旦require'openuri'
包含在一个自定义事实中,问题就解决了
# 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'openuri'
,问题就会再次出现:
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
目前还不清楚是什么导致了问题。这是因素2还是因素3?facter3是用c++11重写的。此外,Facter的本意并不是这样(它是用来收集服务器信息的)。你可能想考虑另一个工具。“MuttSuChar你推荐什么工具?是FACTER 2还是FACTER 3?”facter3是用c++11重写的。此外,Facter的本意并不是这样(它是用来收集服务器信息的)。您可能想考虑另一个工具。@ MttStuuChar,您推荐什么工具?您正在通过HTTP/Apache检索信息,所以<代码>开放URI < /代码>是必要的。但是为什么在使用PUPPET3时没有出现问题?可能您使用的是FACTER 2,它需要/包括<代码>开放URI < /代码>更高,您现在正在使用Facter 3,这并不是因为重写。@MattSchuchard
/opt/puppetlabs/bin/Facter--version:3.2.0
@MattSchuchard您可以发布您的解释和建议的解决方法作为答案吗?您正在通过http/apache检索信息,所以这里需要打开uri
。但是为什么在使用了puppet3?可能您使用的是Facter 2,它要求/包括更高级别的开放uri,而您现在使用的是Facter 3,这不是因为重写。@MattSchuchard/opt/puppetlabs/bin/Facter--version:3.2.0
@MattSchuchard您可以发布您的解释和建议的解决方法作为答案吗?