2

私が何かを見逃していて、これはすでに回答されている場合は本当に申し訳ありません.このサイトとGoogleを検索しましたが、とにかく何も見つかりません.

Ruby 1.8 と Puppet 2.7 を実行しています。私はどちらも初めてですが、ここ数週間、Puppet でかなりの量の作業を行ってきました。サイトをダウンさせずに木材に触れてください :)

ここで、いくつかのカスタム ファクトを書きたいと思います。Puppet ドキュメント サイトにある手順を試してみました。以下のように hardware_platform.rb を作成しました。

# hardware_platform.rb

Facter.add("hardware_platform") do
  setcode do
    Facter::Util::Resolution.exec('/bin/uname -i')
  end
end

私は次のように実行することになっていると思います:

# ruby hardware_platform.rb

しかし、そうすると、次のエラーが発生します。

hardware_platform.rb:3: uninitialized constant Facter (NameError)

ここで何がうまくいかないのか誰か知っていますか?先に進む前に、これを乗り越える必要があります...

ありがとう

4

2 に答える 2

3

require 'facter'おそらく、スクリプトの先頭にa がありません。また、 を実行して factor gem がインストールされていることを確認しますgem install facter

于 2012-11-13T17:17:53.860 に答える
1

puppet が検索する ruby​​ lib ディレクトリ以外の場所でこのコードをテストする場合は、最初に RUBYLIB を設定します。たとえば、ディレクトリ名/path/to/dirでテストするには、 lib/ruby/facter/hardware_platform.rbを作成します

そして、次のことができます。

export RUBYLIB=/path/to/dir/lib/ruby

その後、実行できます

facter hardware_platform

正しい結果が得られるはずです。

@lucas_clemente が言うように、factorer がシステムにインストールされているかどうかも確認する必要があります。yum を使用している場合は、以下を使用してチェック/インストールするだけです。

yum list facter 

インストールされている場合は次のようになります。インストールされていない場合は、リポジトリにバージョンが存在することが示されます。

facter.x86_64        1:1.6.12-2.el5           installed
于 2012-11-13T17:45:15.633 に答える