[et-mgmt-tools] ANNOUNCE: Augeas - a configuration API

David Lutterkort dlutter at redhat.com
Sun Apr 20 18:58:21 UTC 2008


On Sun, 2008-04-20 at 09:31 -0400, Jason Edgecombe wrote:
> This sounds a lot like what gconfd was made for. How is it different?

gconfd addresses slightly different uses in a different environment: its
main focus is on dektop apps, and because of its origin and focus on the
Gnome desktop, it's reasonable to expect applications to be built to
gconf's API and use it as a 'master' data storage.

Augeas is more focused on all the files that are _not_
managed/manageable by gconfd, especially all the sundry config files
in /etc; there it's unreasonable that the programs using those config
files will adapt to some grand unified API and storage scheme. It is
also unrealistic, as attempts at introducing that have failed --- and
uptream has good reasons for not jumping at such a cheme: for one, it's
not clear if any of those schemes will find wide enough acceptance to
make supporting it worthwhile. The way a daemon processes config files
to get its config out if it is also different from how an editing tool
like Augeas has to process it: the daemon can just ignore comments,
space etc. and does never have to worry about writing the file. These
are two very important concerns for Augeas.

There are two other approaches to programmatic config file editing
besides the grand unified API/storage approach that people commonly
take:

      * Grep/sed/awk etc. your way through to make the change you need.
        Works for simple file formats/situations, but everybody winds up
        reinventing that for their specific situation, and there's
        usually not enough effort put into that to make sure that every
        possible variation of a file is processed correctly. Augeas
        addresses that by focusing just on the processing/editing
        aspect, so that for each file the description can be adapted and
        perfected over time (assuming it wasn't perfect to begin with ;)
        A lot of this is about corner cases like not getting thrown off
        by whitespace at the end of line etc. 
      * Templating gets you out of parsing files and worrying about the
        above issues. The downside is that it introduces an ad-hoc
        canonical store of config data that is not the real config file;
        you can't edit those files anymore by hand or with a second tool
        (or lose your edits the next time the template engine runs) You
        usually also lose the flexibility to express everything that can
        be expressed in the 'real' config file.

The limitations of these three approaches were very important in the
design of Augeas, and avoiding them lead to what it is and how it works.

David





More information about the et-mgmt-tools mailing list