I've been setting up some new VMs for a separate project at work.
I've realized that this is painful for two reasons: Bacula and
Nagios.
Both are important...can't have a service without monitoring, and
can't have a machine without backups. But each of these are
configured by vast files; Bacula's is monolithic (the director's,
anyhow, which is where you add new jobs) and Nagios' is legion.
And they're hard to configure automagically with sed/awk/perl or
cfengine; their stanzas span lines, and whitespace is important.
I've recently added a short script to my Nagios config; it
regenerates a file that monitors all the Bacula jobs and makes sure
they happen often enough. This is good...and I want more.
I found pynag, a Python module to parse and configure Nagios
files. This is a start. I've had problems getting its head around my
config files, because it didn't understand recursion in hostgroups
(which I think is a recent feature of Nagios) or a hostname equal to
"*". I've got the first working, and I'm banging my head against the
second. The three books I got recently on Python should help (wow,
IronPython looks nice).
There are a lot of example scripts with pynag. None do exactly what I
want, but it looks like it should be possible to generate Nagios
config files from some kind of list of hosts and services. This would
be a big improvement.
But then there's Augeas, which does bi-directional parsing of
config files. Have a look at the walk-through...it's pretty
astounding. I realized that I've been looking for something like this
for a long time: an easier way of managing all sorts of config
files. Cfengine (v2 to be sure) just isn't cutting it anymore for me.
Now, the problem with Augeas for my present task is that there isn't
anything in the current tree that does what I want, either. There is
a commit for parsing nagios.cfg -- not sure if it's been released, or
if it will parse everything in a Nagios config_dir. There's nothing
for Bacula, either. This will mean a lot more work to get my ideal
configuration management tool.
(On a side note, my wife said something to me the other day that was
quite striking: I need tasks that can be divvied up into 45-minute
chunks. That's how much free time I've got in the morning, bus rides
to and from work, and the evening. Commute + kids != long blocks of
free time.)
And I've got a congenital weakness for grand overarching syntheses of
all existing knowledge...or at least big tasks like managing config
files. So I'm trying to be aware of my brain.
...and there's son #2 waking up. Time to post.