使用Puppetdb ENCvariables?

我正在阅读关于添加自定义事实的木偶文档 。 大部分信息似乎与在代理上运行的模块相关。

在我的情况下,我只是想要一个简单的环境variables,我可以从主节点为每个节点设置。 然后我的ENC会做一个PuppetDb查询来查看它应该服务的环境。

我可以这样做,还是所有的事实都来自代理?

我可以做到这一点,

是的,这是可能的。 人们可以在puppet模块中创build一个自定义的事实,例如运行一些ruby代码来获取已安装软件的版本:

MODULE_NAME / LIB / facter / customfact.rb

Facter.add("customfact") do setcode do 123 end end 

上面的代码驻留在Puppetmaster上,当运行puppet时,例如十个不同的代理,结果,即123和每个节点的主机名将被注册在PuppetDB中,并可以在Puppetboard中查看。

或者所有事实都来自代理人?

没有自定义的事实存在于木偶大师

傀儡facts总是由代理人发送给主人的信息。 因此,你不能在傀儡方面设定一个事实。

但是,您可以select使用puppet收据configuration代理环境(例如,使用[puppet_config_providers] [1])。

 puppet_config { 'agent/environment': value => $::puppet_environment, } 

不过,只有在下一次傀儡运行时,才会考虑到这一变化。

[1] https://forge.puppet.com/camptocamp/puppet_config_providers