如何在自定义事实(即lib/facter/my_custom_fact.rb
)的上下关系中访问傀儡节点的名称(即清单中的$trusted['certname']
)。
我读了这个问题/答案,这让我充满了希望,但是,唉,我在Facter.value(:sym)
可访问的可用事实列表中没有看到节点名称的参考。
谢谢。
我想我已经解释了很多你已经知道的东西,但我将从头开始。
- 在Puppet代理运行的开始,插件同步运行,这下拉和自定义事实,所以这是当你的my_custom_fact。
- 然后Puppet收集事实,所以它收集了常规事实和插件同步下拉的任何自定义事实,所以这是当my_custom_fact。rb将运行,然后它将这些事实发送到PE服务器。此时,您可以通过运行
facter -p my_custom_fact
来测试您的事实。 - 这些事实与嵌入到目标节点证书中的可信事实一起可用,这些事实仅在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
的系统上随时检查。