我正在编写一个自定义提供程序,我只会在它附加的模块的上下文中使用它。该模块已经定义了我需要采取行动的资源(例如用户名,密码,IP地址)。我要做的是从自定义提供程序访问puppet清单中的范围变量。
这可能吗?
init.pp:
class mymodule(
$username = 'admin',
-- snip --
}
provider.rb:
class Puppet::Provider::MyProvider < Puppet::Provider
def self.configure
#can I get to $mymodule::username here?
某些背景信息:
我正在编写一组将通过API配置服务器的类型。我希望有类似的类型:
mymodule_mail_settings { 'current':
server => 'mail.server.com'
mailuser => 'mail'
}
我要避免的是必须传递用户名/密码/ ip才能访问传递给所有这些不同类型的服务器API。
答案 0 :(得分:0)
变量仅在评估清单代码和创建目录的上下文中有意义。他们不会成为目录的部分。这就是您的类型/提供者代码无法直接使用它们的原因。
为了避免将冗余信息传递给共享它的大量资源,您可以使用一些&#34;聪明的&#34;招数。在我前段时间写过的a patch中,我将这种元信息添加到了Puppet的resources
类型中。你不能在一个模块中这样做,但你可以添加你自己的元类型来携带这样的提示。