Puppet: Konfigurationsdateien manipulieren mit Augeas

Ich stand vor der Frage, wie ich auf allen puppet Nodes die /etc/puppet/puppet.conf editiere. Dabei sollten zwei Eintraege sichergestellt sein:

  1. In der [main] Sektion soll pluginsync=true stehen
  2. In der [agent] Sektion soll report=true stehen

Kurz habe ich ueberlegt ob ich die Datei selbst ueber puppet verteilen soll. Dann wurde ich aber auf Augeas gestossen. Augeas ist ein Tool, das ueber sogenannte Linsen (lenses) verschiedene Konfigurationsdateien in einer baum-Struktur darstellen und bearbeiten kann. Puppet hat Augeas ueber die Ruby Language Bindings bereits integriert. Es ist also problemlos moeglich damit die puppet.conf zu editieren. Hier meine Loesung aus der Klasse:

  augeas { 'puppet.conf':
    context => '/files/etc/puppet/puppet.conf',
    changes => [
      'set main/pluginsync true',
      'set agent/report true',
    ],
    notify  => Service['puppet'],
  }
 
  service { 'puppet':
    ensure  => 'running',
  }

und so sieht es aus wenn es denn durchlaeuft:

notice: Augeas[puppet.conf](provider=augeas): 
--- /etc/puppet/puppet.conf	2014-05-23 20:30:48.000000000 +0200
+++ /etc/puppet/puppet.conf.augnew	2014-05-23 20:30:54.000000000 +0200
@@ -8,9 +8,12 @@
 prerun_command=/etc/puppet/etckeeper-commit-pre
 postrun_command=/etc/puppet/etckeeper-commit-post
 
+pluginsync=true
 [master]
 # These are needed when the puppetmaster is run by passenger
 # and can safely be removed if webrick is used.
 ssl_client_header = SSL_CLIENT_S_DN 
 ssl_client_verify_header = SSL_CLIENT_VERIFY
 
+[agent]
+report=true
 
notice: /Stage[main]/Basics/Augeas[puppet.conf]/returns: executed successfully
info: /Stage[main]/Basics/Augeas[puppet.conf]: Scheduling refresh of Service[puppet]
notice: /Stage[main]/Basics/Service[puppet]: Triggered 'refresh' from 1 events

Weitere Moeglichkeiten wie immer in der entsprechenden Puppet Type Reference.