We are using the Subversion RCS, but the same concepts apply whether you are using other systems (such as CVS or Arch).
The first step is to put the system configuration files into a revision control system (RCS).
An RCS allows us to track the history of files by storing information about changes such as the date/time a change was made, what the change was, who made it, and a free-text field explaining why the change was made.
RCS systems are common for software development shops as a way to track changes to source code.
In this circumstance we are tracking changes to the text configuration files that make up the operating system and its components.
Keeping track of configuration changes to servers is a tough job made tougher when some of the sysadmins work from home.
Questions of who did what when and why can be exacerbated by the lack of physical proximity — in other words, I can’t simply yell over the cubical wall to the colleague down the hall to ask him about the new package installed on the server.Besides, that oral history tradition is difficult to maintain and harder to sustain as the number of machines grows.This essay describes a practice for maintaining a Gentoo Linux distribution using GLCU, Subversion, and Trac that is lightweight (doesn’t impose a large burden on the sysadmin staff), effective (although it is lightweight it better documents and makes accessible the state of our systems over the oral history tradition), and cheap (no operating budget dollars were harmed in the creation of this process — only staff time overhead).Unfortunately, we can’t use the simple filesystem-based linking methods (soft links and hard links) because a) our RCS is smart enough to see the soft link and records it as a soft link in the revision control database rather than following the link to the contents of that directory; and b) one cannot make a hard link to a directory: Since the /etc directory (and other directories) already exist, we’re going to have to play some games to get them into the repository.For the trick do to this with Subversion, see the FAQ entry on in-place imports.Not everything we want to track is in /etc or neatly packaged into directories.