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

Factor 提供了多种加载事实的方法:

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

您可以使用这些方法在分发文件之前在本地执行诸如测试文件之类的操作,或者您可以安排在某些机器上提供一组特定的事实。

使用 Ruby 加载路径

Factor 在 Ruby$LOAD_PATH变量中的所有目录中搜索名为 facter 的子目录,并在这些目录中加载所有 Ruby 文件。如果您的$LOAD_PATHlike中有一个目录,请按~/lib/ruby以下方式设置:

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

因子载荷facter/system\_load.rbfacter/users.rbfacter/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

于 2017-07-20T06:11:07.477 回答