Project Idea no. 5629

Another idea for a project I may or may never get around to completing (or in this case, starting):
* list of configuration files/binaries to ‘check’
* in the case of text-based configuration files, read the file into the database
* nightly, check the files to see if they’ve been modified (MD5sum)
* if the configuration file has been modified, diff it and the file already in the database
* put the output of diff into a database

This would allow an admin quick and easy access to view any changes made to the configuration structure of their machine.

Advantages over using CVS for monitoring

  • automated, no chance of ‘forgetting’ to check a change into CVS
  • non-intrusive
  • easy to view changes
  • easier configuration, easier to roll out onto multiple servers
  • “server roles” automatically selecting default packages – eg “Apache web server” would automatically add /etc/apache/httpd.conf, /usr/sbin/httpd, etc.
  • all done via a central database, eg
    _select samba_config from dbmachinename;

update

I’ve been doing some more thinking about this. Here’s one proposed database structure and what each column should store:
> _dbmachinename
> – file_name (name of the config file we’re backing up)
> – config_orig (config file as it was originally)
> – date_orig (date the config file was read in)
> – config_cur (config file as it is today)

_db_machinenamediffs
– file_id (id of the config file we’re dealing with)
– diff_date (date we took the diff)
– diff_text (text of the actual diff)