
Можно ли получить доступ к переменным конфигурации мастера Puppet (таким как confdir, masterport и т. д.) из манифеста Puppet?
решение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