
Ist es möglich, innerhalb eines Puppet-Manifests auf Puppet-Masterkonfigurationsvariablen (wie Confdir, Masterport usw.) zuzugreifen?
Antwort1
Es gibt drei Möglichkeiten.
- Jeff McCune hat auf seinem GitHub eine nette Funktion, die genau dies tut:
Modul Puppet::Parser::Functions neue Funktion(:getconf, :Typ => :rWert, :doc => 29.09.2010 Die getconf-Funktion verwendet ein einziges Argument, den Namen eines Konfigurationseinstellung und gibt den Wert dieser Einstellung zurück. Es ist ähnlich dem Kommandozeilenargument --configprint für Konfigurationseinstellungen zurückgeben, außer dass diese Informationen offengelegt werden zur Sprache. END_HEREDOC mache |Argumente| wenn args.length != 1 dann raise Puppet::ParseError, ("FEHLER: getconf() akzeptiert nur ein Argument") Ende Puppet[Argumente[0]] Ende # mache |Argumente| Ende # Modul # EOF
Legen Sie dies in eine Datei namens 'getconf.rb' im libdir () Ihres Puppet-Servers /var/puppet/lib/puppet/parser/functions/getconf.rb
und greifen Sie von einem Manifest wie diesem darauf zu
# somemanifest.pp
$myvar = getconf("ssldir")
notify {"set ssldir to ${myvar}":}
2. In Puppet 2.6 ist es sogar noch einfacher, da auf die gesamten Einstellungen zugegriffen werden kann ${settings::somevar}
. Das Manifest lautet also einfach:
# 26manifest.pp
$myvar = $settings::ssldir
notify {"set ssldir to $myvar":}
3. In Puppet 0.25 können Sie eine Inline-Vorlage verwenden:
# 25manifest.pp
$myvar = inline_template("<%= Puppet.settings[:ssldir] %>")
notify {"set ssldir to ${myvar}":}
Methoden 2 und 3 dankdieser Thread über Puppet-User