自定义木偶事实中的节点名称?



如何在自定义事实(即lib/facter/my_custom_fact.rb)的上下关系中访问傀儡节点的名称(即清单中的$trusted['certname'])。

我读了这个问题/答案,这让我充满了希望,但是,唉,我在Facter.value(:sym)可访问的可用事实列表中没有看到节点名称的参考。

谢谢。

我想我已经解释了很多你已经知道的东西,但我将从头开始。

  1. 在Puppet代理运行的开始,插件同步运行,这下拉和自定义事实,所以这是当你的my_custom_fact。
  2. 然后Puppet收集事实,所以它收集了常规事实和插件同步下拉的任何自定义事实,所以这是当my_custom_fact。rb将运行,然后它将这些事实发送到PE服务器。此时,您可以通过运行facter -p my_custom_fact来测试您的事实。
  3. 这些事实与嵌入到目标节点证书中的可信事实一起可用,这些事实仅在Puppet服务器上可用,因为它需要它的私钥来从证书中解密它们(请参阅https://puppet.com/docs/puppet/7/ssl_attributes_extensions.html了解更多信息)。Puppet使用这些事实来编译目录。

所以你可以看到,你想要的事实在你请求它的时候是不可用的,你在阶段2请求它,但是它直到阶段3才从节点的证书中解密。

一旦在Puppet服务器上,虽然它作为节点范围变量$::trusted['certname']可用,但从这里您可以将它传递给清单或自定义函数,任何在阶段4中运行的函数。

我认为唯一的方法,你将能够得到值到my_custom_fact。Pp是在第2步运行事实时使用目标节点中的一个可用事实,您应该能够通过向my_custom_fact.pp;

添加以下行来实现
my_fqdn = Facter.value('fqdn')

这是来自https://puppet.com/docs/puppet/6/custom_facts.html#using_other_facts

网络。fqdn事实是一个常规因素事实,您可以在运行facter networking.fqdn或其别名facter fqdn的系统上随时检查。

最新更新