
¿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.
- 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.rb
y 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