Доступ к переменным конфигурации puppet из манифестов?

Доступ к переменным конфигурации puppet из манифестов?

Можно ли получить доступ к переменным конфигурации мастера Puppet (таким как confdir, masterport и т. д.) из манифеста Puppet?

решение1

Есть три способа.

  1. У Джеффа МакКьюна на GitHub есть замечательная функция, которая делает именно это:
    модуль Puppet::Parser::Functions
      новаяфункция(:getconf, :type => :rvalue, :doc =>
    2010-09-29

    Функция getconf принимает один аргумент — имя
    параметр конфигурации и возвращает значение этого параметра.

    Он аналогичен аргументу командной строки --configprint.
    возвращает настройки конфигурации, за исключением того, что он раскрывает эту информацию
    к языку.
    END_HEREDOC
      делать |аргументы|
        если args.length != 1 тогда
          raise Puppet::ParseError, ("ОШИБКА: getconf() принимает только один аргумент")
        конец
        Кукольный[args[0]]
      конец # сделать |аргументы|
    конец # модуля
    # КонецФ

Поместите это в файл с именем 'getconf.rb' в libdir ( /var/puppet/lib/puppet/parser/functions/getconf.rb) вашего сервера puppet и получите к нему доступ из манифеста следующим образом:

# 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

Связанный контент