Using source control to manage system configs

Rob freebsd at
Tue Feb 27 13:44:59 UTC 2007

On 27/02/2007, at 5:16 AM, David Robillard wrote:

> If you simply want to track changes and be able to roll back your
> configuration files, then  go with a more simple approach like using
> RCS locally. RCS is part of the base FreeBSD system.

David & Chuck,

I'm already using RCS, and I've built a somewhat clunky mechanism  
around it.

One machine holds the master copies of
- site-wide files (/etc/ntp.conf, /etc/resolv.conf, /etc/syslog.conf)
- host-specific files (/etc/hosts, /etc/passwd, /etc/rc.conf) for  
each server

At install time, both sets of files are tarred up and copied to the  
new server. If there's a conflict, the host-specific files win.


It's a good system for installs, but then I update the files on the  
working server. I always mean to merge the changes back to the master  
copy, but it never quite happens.


CVS with a remote repository looks good - updates on the server, and  
a central record of all changes. Reinstalling a server should be as  
easy as 'cvs co $HOST'.


I don't want 6 identical copies of /etc/ntp.conf under version  
control, so the site-wide files and host-specific files should be in  
separate modules. But they have the same working directory, and this  
is where I run into problems with CVS - it's impossible to check them  
both out to the same server.

Is there some way to do this with Subversion? Or can a file be shared  
by different modules? Or am I going about this all wrong?

> Now if you want to keep your changes on another machine, then it's
> just a simple question of running a backup of your machines. (you do
> backup right? ;)

Absolutely - I dump /home from each server to an old iPod (it's a  
small network).

But backups are for preserving entire filesystems. I want my system  
configs to be version controlled, as well as saved.

> Have fun,

Of course - that's why I do this :-)


More information about the freebsd-questions mailing list