Puppet & Augeas & Pulp
Posted on July 19, 2013 (Last modified on March 9, 2022) • 1 min read • 184 wordsAch 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.