Ich stand vor der Frage, wie ich auf allen puppet Nodes die /etc/puppet/puppet.conf editiere. Dabei sollten zwei Eintraege sichergestellt sein:
- In der [main] Sektion soll pluginsync=true stehen
- 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.