从自定义提供程序访问 Puppet 内置变量

Access Puppet built-in variables from a custom provider

有内置的全局变量,可以从清单或模板访问。就像 $serverip 作为主服务器的 IP 地址。我知道如何调用 Facter,但是一些内置函数不由任何 Facter 的 "facts" 表示。如何从自定义提供程序访问它们?

是的,代理将事实值传输给主控,以便在清单编译期间,您可以使用您描述的值。

代理本身(以及扩展的类型和提供者)可以直接访问这些值。

value = Facter.value('serverip')

这在代理端的几乎所有上下文(包括自定义事实)中都应该是可能的,因为 Puppet 代理将总是 加载 Facter,使分辨率直接可用。

随着来自 OP 的更多反馈,很明显这与来自全局变量的 master 信息无关,而是 "implicit facts" 代理配置。

代理可以非常简单地使用其来自全局哈希的配置。

port = Puppet['masterport']
master_host = Puppet['server']

总结一下,下面将 'global' 设置转储为人类可读的注释配置文件格式,供那些想知道哪些设置可用的人使用(那些可以通过 Puppet[' 访问的设置)设置']):

irb(main):001:0> require 'puppet'
irb(main):002:0> Puppet.initialize_settings
irb(main):003:0> puts Puppet.settings.to_config