Auf Puppet-Konfigurationsvariablen aus Manifesten zugreifen?

Auf Puppet-Konfigurationsvariablen aus Manifesten zugreifen?

Ist es möglich, innerhalb eines Puppet-Manifests auf Puppet-Masterkonfigurationsvariablen (wie Confdir, Masterport usw.) zuzugreifen?

Antwort1

Es gibt drei Möglichkeiten.

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

verwandte Informationen