0
# hardware_platform.rb

Facter.add('hardware_platform') do
  setcode do
    Facter::Core::Execution.exec('/bin/uname --hardware-platform')
  end
end

私はそれを実行したいと思いfacter --puppetます。この情報はファクト ログには記録されません。事実から情報を得る方法を教えてください

4

1 に答える 1

1

Facter には、ファクトをロードする複数の方法が用意されています。

  1. $LOAD_PATH、または Ruby ライブラリのロード パス
  2. --custom-dir コマンド ライン オプション
  3. 環境変数「FACTERLIB」</li>

これらの方法を使用して、ファイルを配布する前にローカルでテストしたり、特定のマシンで特定のファクト セットを利用できるように手配したりできます。

Ruby ロード パスの使用

Facter は、Ruby$LOAD_PATH変数内のすべてのディレクトリを検索して、facter という名前のサブディレクトリを探し、それらのディレクトリ内のすべての Ruby ファイルを読み込みます。like にディレクトリがある場合は、次の$LOAD_PATHよう~/lib/rubyに設定します。

#~/lib/ruby
  └── facter
      ├── rackspace.rb
      ├── system_load.rb
      └── users.rb

因子負荷facter/system\_load.rbfacter/users.rb、およびfacter/rackspace.rb

--custom-dirコマンド ライン オプションの使用

Facter は--custom-dir、カスタム ファクトを検索する単一のディレクトリを指定するコマンド ラインで複数のオプションを使用できます。Facter は、指定されたディレクトリ内のすべての Ruby ファイルを読み込もうとします。これにより、次のようなことができます。

$ ls my_facts
system_load.rb
$ ls my_other_facts
users.rb
$ facter --custom-dir=./my_facts --custom-dir=./my_other_facts system_load users
system_load => 0.25
users => thomas,pat

FACTERLIB環境変数の使用

また、Facter は環境変数FACTERLIBで区切られた (Windows の場合はセミコロン、その他すべてのプラットフォームの場合はコロン) で区切られた一連のディレクトリをチェックし、それらのディレクトリ内のすべての Ruby ファイルを読み込もうとします。これにより、次のようなことができます。

$ ls my_facts
system_load.rb
$ ls my_other_facts
users.rb
$ export FACTERLIB="./my_facts:./my_other_facts"
$ facter system_load users
system_load => 0.25
users => thomas,pat

ソース: https://docs.puppet.com/facter/3.6/custom_facts.html#loading-custom-facts

于 2017-07-20T06:11:07.477 に答える