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

Ruby 从自定义提供程序访问Puppet内置变量,ruby,puppet,Ruby,Puppet,有内置的全局变量,可以从清单或模板访问。比如$serverip作为主机的IP地址。我知道如何称呼Facter,但是一些内置的东西并没有用Facter的事实来表示。如何从自定义提供程序访问它们?是的,代理程序将事实值传输到主程序,以便在清单编译期间,您可以使用所述的值 代理本身以及通过扩展,类型和提供程序可以直接访问这些值 value = Facter.value('serverip') 这在代理端的几乎所有上下文(包括自定义事实)中都是可能的,因为傀儡代理将始终加载事实,使解析直接可用。随着O

有内置的全局变量,可以从清单或模板访问。比如$serverip作为主机的IP地址。我知道如何称呼Facter,但是一些内置的东西并没有用Facter的事实来表示。如何从自定义提供程序访问它们?

是的,代理程序将事实值传输到主程序,以便在清单编译期间,您可以使用所述的值

代理本身以及通过扩展,类型和提供程序可以直接访问这些值

value = Facter.value('serverip')

这在代理端的几乎所有上下文(包括自定义事实)中都是可能的,因为傀儡代理将始终加载事实,使解析直接可用。

随着OP的更多反馈,很明显这与全局变量的主信息无关,但隐式事实与代理配置相反

代理可以非常简单地从全局散列中使用其配置

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

总而言之,以下内容将“全局”设置转储为可读的注释配置文件格式,供那些想知道哪些设置可用的人使用Puppet['setting']访问:


这似乎对“servername”和“serverip”都不起作用。当从提供程序代码调用远程客户端时,它返回一个空字符串。从命令行运行Facter时也是如此。于是问题来了:。我忘了提,我还在玩傀儡2.7。在较新的版本中,有一个叫做$server_facts.Oh的东西来自master。我想你在那里运气不好。代理只能使用目录的一部分或由Facter检索的信息。因此,您需要手动将数据作为参数传递给类型实例。资源默认值使这种特技更为可行。呃,因此,要么在自定义类型中添加参数,其唯一目的是确保变量进入catalog-parse puppet.conf,虽然粗俗但简单地对代理的puppet.conf进行分析,但不会产生关于主配置的可靠信息。如果您正在进行代理端配置设置,则这是另一个问题。我想这应该是一个新问题。从任何角度来看,这确实很简单:。谢谢你,弗兰克!
irb(main):001:0> require 'puppet'
irb(main):002:0> Puppet.initialize_settings
irb(main):003:0> puts Puppet.settings.to_config