在 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
事实值不存在会发生什么
所以我的问题是:
- 当我 运行
puppet apply —facterpath=module/lib/facter
?
如果事实解析试图为另一个尚未加载的事实获取 Facter.value()
,那么 Facter 将立即尝试加载所需的事实。也就是说
- 不,事实文件不一定按字母顺序加载,但是
- 不过您不必担心事实加载顺序。
您确实需要避免在事实之间创建依赖循环,但依赖于内置事实的自定义事实绝不会导致此类循环。
我有以下文件结构:
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
事实值不存在会发生什么
所以我的问题是:
- 当我 运行
puppet apply —facterpath=module/lib/facter
?
如果事实解析试图为另一个尚未加载的事实获取 Facter.value()
,那么 Facter 将立即尝试加载所需的事实。也就是说
- 不,事实文件不一定按字母顺序加载,但是
- 不过您不必担心事实加载顺序。
您确实需要避免在事实之间创建依赖循环,但依赖于内置事实的自定义事实绝不会导致此类循环。