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 db_machinename;_

### **update**

I’ve been doing some more thinking about this. Here’s one proposed database structure and what each column should store:
> _db_machinename_
> – 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_machinename_diffs_
> – 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)_