1

次のカスタム ファクト:

# 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(/Latest\sversion:\s(.*)</)
    match[1]
  end
end

puppet を使用して動作しましたが、次の問題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 は、ホストにインストールされているもの (Puppet3) ではなく、組み込みの Ruby バージョンを使用しているようです。

Puppet 4、Facter 2.4 と CFacter 0.4 の両方、最新の Hiera と Mcollective、Ruby 2.1.5、OpenSSL 1.0.0r、および gem の依存関係。

  • rb_sysopenRuby 2.1.5 には存在しないのですか? 証拠は見つかりませんでした。
  • 問題を引き起こす可能性のある事実に関連する変更が発生した可能性がありますか? リリース ノートには関連するものは何も見つかりませんでした。

質問

rb_sysopenPuppet4 へのアップグレード以降、カスタム ファクトで見つからなくなったのはなぜですか?

4

1 に答える 1

0

簡潔

両方の事実に含めrequire 'open-uri'ますが、Puppet4 へのアップグレード以降、なぜこれが必要なのかわかりません

詳細

カスタムファクトの1require '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

現時点では、何が問題を引き起こしているのかは不明です。

于 2016-06-29T19:50:24.130 に答える