Acessando variáveis ​​de configuração de fantoches a partir de manifestos?

Acessando variáveis ​​de configuração de fantoches a partir de manifestos?

É 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.

  1. 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.rbe 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

informação relacionada