Puppet & Augeas & Pulp

1 minute read

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.