如何解决在模块/lib/facter/* 下的文件中找到的事实将按什么顺序加载到 puppet 客户端上?
lib
└── facter
├── rackspace.rb
├── system_load.rb
└── users.rb
我想在我正在编写并在 system_load.rb
中定义的另一个自定义事实中使用在 :system_me
中找到的自定义事实值(我们称之为 users.rb
事实)。像这样:
# users.rb
Facter.add('sogood') do
you = ''
me = Facter.value(:system_me)
if me == 'foo'
you = 'bar'
end
setcode do
you
end
end
但是,我担心如果在客户端尝试运行 system_me
之前 sogood
事实值还不存在会发生什么。
所以我的问题是:
- 当我运行
rackspace.rb -> system_load.rb -> users.rb
时,是否会按照文件名 (puppet apply —facterpath=module/lib/facter
) 的字母顺序加载上述 lib 文件夹结构中的事实文件?
解决方法
如果事实解析尝试为另一个尚未加载的事实获取 Facter.value()
,则 Facter 将立即尝试加载所需的事实。这意味着
- 不,事实文件不一定按字母顺序加载,但是
- 您仍然不必担心事实加载顺序。
您确实需要避免在事实之间创建依赖循环,但是依赖于内置事实的自定义事实永远不会导致这样的循环。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。