# hardware_platform.rb
Facter.add('hardware_platform') do
setcode do
Facter::Core::Execution.exec('/bin/uname --hardware-platform')
end
end
我想执行它,当我给facter --puppet
。这些信息并不包含在日志中。请告诉我如何从事实的信息我想执行我在自己制作的自定义事实
# hardware_platform.rb
Facter.add('hardware_platform') do
setcode do
Facter::Core::Execution.exec('/bin/uname --hardware-platform')
end
end
我想执行它,当我给facter --puppet
。这些信息并不包含在日志中。请告诉我如何从事实的信息我想执行我在自己制作的自定义事实
Facter提供装载事实的多种方法:
- $ LOAD_PATH,或Ruby库加载路径
- 的--custom-dir命令行选项
- 环境变量“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.rb
,facter/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
您需要投入一些精力来提供你已经尝试过精确的细节,文档您已经阅读等等。 –
这是傀儡模块的一部分吗? – ptierno