Ach Augeas ist schon genial. Wenn nur nicht … (jaja, immer was zu meckern). Anlass diesmal: /etc/pulp/admin/admin.conf. Das ist eine in Augeas nicht vorgesehene Datei, und die Augeas-Doku ist … nun ja. Analyse: Die Datei besteht aus Sektionen (“[blablubb]”), und Einträgen (“hallo = welt”). Da sollte sich doch was finden lassen.
Tut es auch: Die IniFile-Lens. Preisfrage: Wie testet man das? Beim Ausprobieren stieß ich auch auf die Information, dass die IniFile-Lens nicht für direkte Nutzung gedacht ist, sondern nur für die Nutzung in … abgeleiteten Lenses. Wie z.B. der Puppet-Lens. Die angeblich gut passt. Dann testet man das auf der Konsole folgendermaßen:
augtool> set /augeas/load/IniFile/lens Puppet.lns augtool> set /augeas/load/IniFile/incl /etc/pulp/admin/admin.conf augtool> load augtool> match /files/etc/pulp/admin/admin.conf/server/host /files/etc/pulp/admin/admin.conf/server/host = localhost.localdomain
Schee. Total intuitiv, oder? 🙂
Ich möchte also den Wert von “host” unter “[server]” ändern, wie man sieht. Die dafür notwendige Puppet-Regel sieht so aus:
augeas { "admin.conf/${key}": incl => '/etc/pulp/admin/admin.conf', lens => 'Puppet.lns', onlyif => "get /files/etc/pulp/admin/admin.conf/server/host != ${hostname}", changes => [ "set /files/etc/pulp/admin/admin.conf/server/host ${hostname}", ], }
So wird ein Schuh draus. Man beachte, dass in der onlyif-Abfrage vor und hinter “!=” ein Leerzeichen stehen muss.