# 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
. 此信息不会出现在事实日志中。告诉我如何从事实中获取信息
Factor 提供了多种加载事实的方法:
- $LOAD_PATH,或 Ruby 库加载路径
- --custom-dir 命令行选项
- 环境变量“FACTERLIB”</li>
您可以使用这些方法在分发文件之前在本地执行诸如测试文件之类的操作,或者您可以安排在某些机器上提供一组特定的事实。
使用 Ruby 加载路径
Factor 在 Ruby$LOAD_PATH
变量中的所有目录中搜索名为 facter 的子目录,并在这些目录中加载所有 Ruby 文件。如果您的$LOAD_PATH
like中有一个目录,请按~/lib/ruby
以下方式设置:
#~/lib/ruby
└── facter
├── rackspace.rb
├── system_load.rb
└── users.rb
因子载荷facter/system\_load.rb
、facter/users.rb
和facter/rackspace.rb
。
使用--custom-dir
命令行选项
Factor 可以--custom-dir
在命令行上采用多个选项,指定单个目录来搜索自定义事实。Factor 尝试加载指定目录中的所有 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