¿Acceder a variables de configuración de títeres desde manifiestos?

¿Acceder a variables de configuración de títeres desde manifiestos?

¿Es posible acceder a las variables de configuración de Puppet Master (como confdir, masterport, etc.) desde un manifiesto de Puppet?

Respuesta1

Hay tres maneras.

  1. Jeff McCune tiene una función interesante en su github que hace exactamente esto:
    módulo Puppet::Parser::Funciones
      nuevafunción(:getconf, :tipo => :rvalor, :doc =>
    2010-09-29

    La función getconf toma un único argumento, el nombre de un
    valor de configuración y devuelve el valor de ese valor.

    Es similar al argumento de línea de comando --configprint para
    devolver los ajustes de configuración excepto que expone esta información
    al idioma.
    END_HEREDOC
      hacer |argumentos|
        si args.length! = 1 entonces
          rise Puppet::ParseError, ("ERROR: getconf() toma solo un argumento")
        fin
        Marioneta[args[0]]
      fin # hacer |args|
    final # módulo
    #EOF

Coloque esto en un archivo llamado 'getconf.rb' en el libdir () de su servidor Puppet /var/puppet/lib/puppet/parser/functions/getconf.rby acceda a él desde un manifiesto como

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

2. En Puppet 2.6 es aún más fácil ya que se puede acceder a toda la configuración como ${settings::somevar}, por lo que el manifiesto es simplemente:

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

3. En Puppet 0.25 puedes usar una plantilla en línea:

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

Métodos 2 y 3 gracias aeste hilo sobre usuarios de marionetas

información relacionada