从清单访问 Puppet 配置变量?

从清单访问 Puppet 配置变量?

是否可以从 Puppet 清单中访问 Puppet Master 配置变量(如 confdir、masterport 等)?

答案1

有三种方法。

  1. Jeff McCune 在他的 github 上有一个很好的功能,可以做到这一点:
    模块 Puppet::Parser::Functions
      新函数(:getconf,:type => :rvalue,:doc =>
    2010-09-29

    getconf 函数接受一个参数,即
    配置设置并返回该设置的值。

    它类似于 --configprint 命令行参数
    返回配置设置,除非它公开此信息
    语言。
    结束_HEREDOC
      做|参数|
        如果 args.length != 1 那么
          引发 Puppet::ParseError, ("错误:getconf() 只接受一个参数")
        结尾
        傀儡[参数[0]]
      结束# 执行|args|
    结束#模块
    # 结尾

将其放入 Puppet 服务器 libdir ( /var/puppet/lib/puppet/parser/functions/getconf.rb) 中名为“getconf.rb”的文件中,然后从清单中访问它,例如

# somemanifest.pp
$myvar = getconf("ssldir")
notify {"set ssldir to ${myvar}":}

2. 在 Puppet 2.6 中,这变得更容易,因为整个设置都可以通过 访问${settings::somevar},因此清单很简单:

# 26manifest.pp
$myvar = $settings::ssldir
notify {"set ssldir to $myvar":}

3. 在 puppet 0.25 中,您可以使用内联模板:

# 25manifest.pp 
$myvar = inline_template("<%= Puppet.settings[:ssldir] %>")
notify {"set ssldir to ${myvar}":}

方法 2 和 3 感谢puppet-users 上的这个帖子

相关内容