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.

Fail2ban: Hostname im Subject / Emails vom 01.01.1970

Ich habe bei fail2ban immer die Emailbenachrichtigung aktiviert und dabei zwei Aenderungen in der /etc/fail2ban/action.d/sendmail-whois-lines.conf vorgenommen:

  1. Im Betreff habe ich den Hostnamen mit aufgenommen. Dafuer habe ich die actionstart, actionstop und actionban Zeilen so abgeaendert, dass Sie wie folgt beginnen:
    printf %%b "Subject: [Fail2Ban] - `hostname -f` - <name>:

    Neu ist das `hostname -f`.

  2. Weiter gibt es das Problem, das die Mails immer am 01.01.1970 verschickt werden. Dafuer existiert auch ein Bugreport auf Github, der Bugfix ist aber auf meinen Systemen noch nicht angekommen, weswegen ich ihn von Hand eingepflegt habe. In der Zeile unter den oben bereits erwaehnten habe ich hinter den date Aufruf jeweils ein –rfc 2822 eingefuegt. Die Zeile sieht nun bei mir wie folgt aus:
    Date: `date --rfc-2822 -u +"%%a, %%d %%h %%Y %%T +0000"`