2017-07-19 68 views
0
# hardware_platform.rb 

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

我想执行它,当我给facter --puppet。这些信息并不包含在日志中。请告诉我如何从事实的信息我想执行我在自己制作的自定义事实

+1

您需要投入一些精力来提供你已经尝试过精确的细节,文档您已经阅读等等。 –

+0

这是傀儡模块的一部分吗? – ptierno

回答

0

Facter提供装载事实的多种方法:

  1. $ LOAD_PATH,或Ruby库加载路径
  2. 的--custom-dir命令行选项
  3. 环境变量“FACTERLIB”

您可以使用这些方法distributin之前做的事情一样测试文件在本地克他们,或者你可以安排在某些机器上有一组特定的事实。

使用Ruby加载路径

Facter搜索名为facter子目录在Ruby $LOAD_PATH变量的所有目录,并加载这些目录中的所有Ruby文件。如果您在$LOAD_PATH有一个目录像~/lib/ruby,设立这样的:

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

Facter负荷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