Categories
Uncategorized

OpenStack IPs, part II

Just a short one. Now that I can list IPs (see last post), it might be nice to associate them on the command line, too. First I wanted to extend the little script, but then I remembered there must already be a CLI way for this.

And there is.

$ openstack server list
$ nova floating-ip-associate <server-uuid> <floating-IP>

(Note: The floating-ip is the actual IP, not the UUID of the OpenStack floating IP)

Groovy.

Categories
Uncategorized

Puppet & Augeas & Pulp

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.