Tagged: augeas Toggle Comment Threads | Keyboard Shortcuts

  • penguin 16:58 on 2013-08-01 Permalink | Reply
    Tags: augeas,   

    Augeas und Reihenfolge 

    Problem: mit HIlfe von Augeas einen Eintrag zur /etc/hosts Datei hinzufügen.

    Erste Lösung:

    augeas { "${title}" : 
        context => '/files/etc/hosts', 
        changes => [
            "rm *[canonical = '${host}']", 
            "set 02/canonical ${host}",
            "set 02/ipaddr ${ip}", 
        ]
    }

    Funktioniert nicht. Warum? Trotz Aufruf von “save” am Ende einer jeden Sitzung im augtool ist die Reihenfolge der Anweisungen durchaus entscheidend – die Daten werden offenbar nicht erst am Ende zusammengesetzt. Hier z.B. gilt: In der gleichen Reihenfolge vorgehen, wie es auch in die Datei geschrieben werden würde. Und da steht nun mal am Anfang die IP Adresse. Daher also eine einfache kleine Änderung machen und schon gehts:

    augeas { "${title}" : 
        context => '/files/etc/hosts', 
        changes => [
            "rm *[canonical = '${host}']", 
            "set 02/ipaddr ${ip}", 
            "set 02/canonical ${host}",
        ]
    }

    (Ganz davon abgesehen dass man einfach den host{} Typen von Puppet verwenden sollte)

     
  • penguin 11:12 on 2013-07-19 Permalink | Reply
    Tags: augeas, ,   

    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.

     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
shift + esc
cancel