从自定义提供程序访问Puppet模块变量

时间:2016-09-14 00:06:13

标签: ruby puppet

我正在编写一个自定义提供程序,我只会在它附加的模块的上下文中使用它。该模块已经定义了我需要采取行动的资源(例如用户名,密码,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。

1 个答案:

答案 0 :(得分:0)

变量仅在评估清单代码和创建目录的上下文中有意义。他们不会成为目录的部分。这就是您的类型/提供者代码无法直接使用它们的原因。

为了避免将冗余信息传递给共享它的大量资源,您可以使用一些&#34;聪明的&#34;招数。在我前段时间写过的a patch中,我将这种元信息添加到了Puppet的resources类型中。你不能在一个模块中这样做,但你可以添加你自己的元类型来携带这样的提示。