使用 Puppetdb 作为 ENC 变量?

使用 Puppetdb 作为 ENC 变量?

我正在阅读关于添加自定义事实的 Puppet 文档。大多数信息似乎与制作在代理上运行的模块有关。

在我的例子中,我只想要一个简单的环境变量,可以从主节点为每个节点设置。然后我的电子海图将进行 PuppetDb 查询来查看它应该服务于什么环境。

我可以这样做吗,或者所有事实都源自代理人?

答案1

我可以这样做吗?

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

模块名称/lib/facter/customfact.rb

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

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

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

不,自定义事实存在于 Puppetmaster 上

答案2

puppetfacts总是由代理发送给 master 的信息。因此您无法在 puppetmaster 端设置事实。

但是,您可以选择使用 Puppet 收据配置代理环境(例如,使用 [puppet_config_providers][1])。

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

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

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

相关内容