augeas - reading/modifying/writing system configuration files

Harald Hoyer harald at redhat.com
Mon May 5 12:15:02 UTC 2008


Hi,

just want to introduce augeas to you developers.

_What is augeas?_

From: http://augeas.net/

Augeas is a configuration editing tool. It parses configuration files in their native formats and transforms 
them into a tree. Configuration changes are made by manipulating this tree and saving it back into native 
config files.

Augeas is:

     * An API provided by a C library
     * A command line tool to manipulate configuration from the shell (and shell scripts)
     * Language bindings to do the same from your favorite scripting language
     * Canonical tree representations of common configuration files
     * A domain-specific language to describe configuration file formats


_What can I do with augeas?_

Example: Set the default boot entry in grub

Shell:
# augtool
augtool> match /files/etc/grub.conf/title
/files/etc/grub.conf/title[1] = Fedora (2.6.25-14.fc9.x86_64)
/files/etc/grub.conf/title[2] = Linux 2.6.25-1
augtool> get /files/etc/grub.conf/default
/files/etc/grub.conf/default = 0
augtool> set /files/etc/grub.conf/default 1
augtool> save
augtool> quit
# grep default /etc/grub.conf
default=1

Python:
[root  ~]# python
Python 2.5.1 (r251:54863, Apr  8 2008, 01:19:33)
[GCC 4.3.0 20080404 (Red Hat 4.3.0-6)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
 >>> import augeas
 >>> a = augeas.augeas()
 >>> a.match("/files/etc/grub.conf/title")
['/files/etc/grub.conf/title[1]', '/files/etc/grub.conf/title[2]']
 >>> a.get("/files/etc/grub.conf/default")
'0'
 >>> a.set("/files/etc/grub.conf/default", "1")
True
 >>> a.save()
True
 >>>
# grep default /etc/grub.conf
default=1


C:
augeas *a = aug_init(NULL, NULL, AUG_NONE);
ret = aug_match(a, "/files/etc/grub.conf/title", &matches_p);
ret = aug_get(a, "/files/etc/grub.conf/default", &value);
ret = aug_set(a, "/files/etc/grub.conf/default", "1");
ret = aug_save(a);

Simple, isn't it? :-)

See also: http://augeas.net/tour.html

_What should use augeas?_

All system-config-* tools should use augeas, as well as every tool modifying system configuration files like 
e.g. NetworkManager.

_Why should I switch my tool to use augeas?_

* not to reinvent the wheel
* one source to rule them all

_Where can I get augeas?_

augeas just passed the package review. https://bugzilla.redhat.com/show_bug.cgi?id=444792
python-augeas still needs someone doing the review. https://bugzilla.redhat.com/show_bug.cgi?id=444945

Meanwhile you can always download the source from: http://augeas.net/




More information about the fedora-devel-list mailing list