
É possível acessar variáveis de configuração mestre do Puppet (como confdir, masterport, etc) de dentro de um manifesto do Puppet?
Responder1
Existem três maneiras.
- Jeff McCune tem uma função interessante em seu github que faz exatamente isso:
módulo Puppet::Parser::Functions novafunção(:getconf, :type => :rvalue, :doc => 29/09/2010 A função getconf recebe um único argumento, o nome de um definição de configuração e retorna o valor dessa configuração. É semelhante ao argumento da linha de comando --configprint para retornar definições de configuração, exceto que expõe essas informações para o idioma. END_HEREDOC fazer |args| se args.length! = 1 então raise Puppet::ParseError, ("ERRO: getconf() leva apenas um argumento") fim Fantoche[args[0]] fim # faça |args| fim # módulo # EOF
Coloque isso em um arquivo chamado 'getconf.rb' no libdir () do seu servidor fantoche /var/puppet/lib/puppet/parser/functions/getconf.rb
e acesse-o a partir de um manifesto como
# somemanifest.pp
$myvar = getconf("ssldir")
notify {"set ssldir to ${myvar}":}
2. No Puppet 2.6 é ainda mais fácil, pois toda a configuração das configurações é acessível como ${settings::somevar}
, então o manifesto é simplesmente:
# 26manifest.pp
$myvar = $settings::ssldir
notify {"set ssldir to $myvar":}
3. No puppet 0.25 você pode usar um modelo embutido:
# 25manifest.pp
$myvar = inline_template("<%= Puppet.settings[:ssldir] %>")
notify {"set ssldir to ${myvar}":}
Métodos 2 e 3 graças aeste tópico sobre usuários de fantoches