在 module/lib/facter/* 下的文件中找到的事实将以什么顺序加载到 Puppet 客户端?

In what order will facts found in files under a module/lib/facter/* be loaded on a puppet client?

我有以下文件结构:

lib
└── facter
    ├── rackspace.rb
    ├── system_load.rb
    └── users.rb

我想在我正在编写并在 users.rb 中定义的另一个自定义事实中使用在 system_load.rb 中找到的自定义事实值(我们称之为 :system_me 事实)。像这样:

# users.rb

Facter.add('sogood') do
  you = ''
  me = Facter.value(:system_me)
  if me == 'foo'
    you = 'bar'
  end
  setcode do
    you
  end
end

但是,我担心如果在客户端尝试 运行 sogood.

之前 system_me 事实值不存在会发生什么

所以我的问题是:

  1. 当我 运行 puppet apply —facterpath=module/lib/facter ?

如果事实解析试图为另一个尚未加载的事实获取 Facter.value(),那么 Facter 将立即尝试加载所需的事实。也就是说

  • 不,事实文件不一定按字母顺序加载,但是
  • 不过您不必担心事实加载顺序。

您确实需要避免在事实之间创建依赖循环,但依赖于内置事实的自定义事实绝不会导致此类循环。