

Version Control for Important System Files? 71
TokyoCrusaders92 asks: "Like a lot of other organizations (800 staff, 5000 students) we have a mix of Windows, Novell & Linux (primarily Linux) for our IT infrastructure. We now have a multitude of config files, firewall rule bases, shell scripts, and so forth which are managed by multiple people and groups. Recently, we started using RCS for version control of the firewall rule-base, but this doesn't seem like it would scale up to larger groups of users. While thinking about this, it would seem that the critical features would include: version control; logging; multiple users; secure authentication; and integrity checking. What are other people using to manage their config files?"
Notepad (Score:4, Funny)
Re:Notepad (Score:4, Informative)
Re: (Score:2)
Re: (Score:2, Funny)
Distributed SCM (Score:3, Informative)
I keep my config files in a directory structure in my home directory on my laptop which mirrors the structure of the systems I maintain. I use the mercurial [selenic.com] DSCM for version control and push revisions to a user account on each server. From there I run a script as root which recursively copies the files into the target directory tree.
Re: (Score:2)
A CVS server (Score:5, Informative)
Use SVN instead (Score:3, Informative)
Re: (Score:1)
Re: (Score:2, Interesting)
I tried CVS for that... it is too much of a pain in the ass to patch CVS to accept root users. I don't know about you, but screwing about with permissions just to appease CVS was not my idea of fun. Maybe next time I'll run svn or something to see if it works better for config file management.
Re: (Score:2)
I manage /etc on all my boxes with CVS, and I see no such problems.
The CVS used is various versions, plain and unpatched (except by Debian).
Subversion (Score:3, Informative)
Re: (Score:1)
Can we have version control in the file system, please? That way we'd *never* accidentally delete/change files, have them corrupted by viruses/hackers etc. You could label all your files each time you boot up. Perhaps for speed there'd be some files you'd not bother with (swap file, registry, temp files for some apps) but generally it would be pretty cool.
Re: (Score:2)
It seems so. [google.de]
Those who don't know VMS... (Score:4, Informative)
See Files-11 [wikipedia.org] for a flashback.
Re: (Score:2)
ZFS seems to be headed in that direction, though I've seen bickering about how it would be exposed. No
Re: (Score:2)
Re: (Score:2)
Fortunately OpenSolaris will be licensed GPL3 soon (at least that's the word on the street).
I'm not sure what happens when you try to use GPL3 code in a GPL2 product like Linux. I'd have to guess the FSF has that covered, but I'm not sure. The patent part should be covered regardless.
Now that I think about it, Patents + GPL3 is a nice way for co
Re:Subversion (Score:4, Informative)
SVK is better, but it is not as widely supported as SVN.
Re: (Score:2)
That's true, but in practice is that such a huge problem? We use SVN already for all project code and have managed to make do with it. If you can grep and operate on a few megs of in-house development source, a comparatively tiny /etc directory shouldn't be too much hassle.
That's a
Re: (Score:2)
SVK is built on top of SVN and written in Perl. It works pretty much everywhere, but you don't get nice GUI clients for it.
Re: (Score:3, Interesting)
I've been using svn for a few years now for projects and system files.
Re: (Score:2)
Re: (Score:2)
I don't like --exclude because it leads to more typing and also can lead to errors if you forget to add it.
Re: (Score:2)
Re: (Score:2)
And, personally, I prefer to minimize number of 'failure points' in my workflow. I take Murhpy's laws very seriously.
Re: (Score:2, Informative)
Re: (Score:2)
Exporting and importing changes to working copy leads to more errors (if you forget to delete a file from repo, etc.).
puppet... maybe (not yet at least) (Score:3, Informative)
Using something like subversion or any other version control system for such a task just leads to Yet Another Homebrew Administration System, that will probably lead your successors to tears and insanity. Use tools already there, and that are pertinent to the job.
Problem for your situation is that it has no Windows or Novell support as of yet, but recently work on Windows at least seems to have started. And if your first priority is mainly config file management: that part should be fairly trivial.
Our system is great (Score:5, Funny)
We have a login script that calls another script that is the one that gets modified. To use different script you just change the name of the called script to the one you want. If the script gets changed then the person who changed it changes the name and we can tell how old it is by the date stamp on the file. So far we have these (oldest to newest):
sublogin.bat
sublogn2.bat
sblg2fix.bat
latestlg.bat
newlatst.bat
finalfix.bat
reverted.bat
fixwrked.bat
NtOnMyPC.bat
WksOnMyn.bat
NTONMYPC.bat
TryThis1.bat
Seriously though, subversion is good because it lets you do atomic checkins.
Case insensitivity? (Score:2)
NtOnMyPC.bat
WksOnMyn.bat
NTONMYPC.bat
Do not M$FT file systems tend to be case insensitive?
Re: (Score:2)
Re: (Score:1)
Re: (Score:2)
Just tested trying to create Test.bat and test.bat in the same directory in Windows XP using the "Explorer" shell, and yes I couldn't create the second file - said the name already existed.
Re: (Score:2)
Re: (Score:2)
Yeah you have to add this value to the registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Con"obcaseinsensitive"=dword:00000000
Which is what you need to do if you are running Services For Unix
Re: (Score:1, Insightful)
What an abortion the Windows registry is! If MS followed the *nix philosophy, the setting would be in an
Re: (Score:3, Informative)
How in the world did this get modded interesting?
It should be clear to anyone that you were being sarcastic :p
Add another box.... (Score:3, Insightful)
While this response was accurate from the technical point of view, it was meant to be a joke
rsnapshot (Score:4, Informative)
I use rsnapshot [rsnapshot.org] to do version control of my entire system. From the description:
rsnapshot is a filesystem snapshot utility for making backups of local and remote systems.
Using rsync and hard links, it is possible to keep multiple, full backups instantly available. The disk space required is just a little more than the space of one full backup, plus incrementals.
Personally, I configure rsnapshot to generate snapshots every 4 hours, and then daily, weekly, and monthly.
In your case, since you only want versioning for your configuration files, you can point rsnapshot at just the configuration directories (probably just /etc).
Re:rsnapshot (Score:4, Insightful)
One idea for Windows and Unix (shameless plug) (Score:3, Interesting)
For Windows, the default answer for deploying configuration is Group Policy [microsoft.com]. With the Group Policy Management Console [microsoft.com] you can back up your GPOs and store them in your version control system. Alternatively, you can use a specialized Group Policy version control and troubleshooting product like Group Policy Manager [quest.com] from Quest [quest.com] which allows offline editing and testing before deployment to your production environment.
You can actually extend Group Policy to your *nix and Novell machines as well using Vintela Group Policy (a part of Vintela Authentication Services [quest.com]), which also has features to allow your *nix machines to use your Active Directory accounts. If you use it in combination with Group Policy Manager, you can back up the *nix specific settings alongside the rest of your GPO. Also, the integration allows you to diff different versions of your *nix settings alongside the rest of your GPO.
[Disclaimer: I am a developer on the Group Policy Manager team at Quest. While I'm proud of my product, I'm not any kind of official spokesperson for my employer.]
rcs (Score:5, Interesting)
In each directory where config files live that I want to keep, I create an RCS directory and rcs -i the file(s).
Nightly, I job runs that finds all files for which an RCS entry exists and that are newer than that entry, and a copy is checked in.
No need to think about checking in/out all the time, no problem that the RCS seems to believe that you don't want to keep the actual file around.
It does not save every edit but at least I have a copy of each day's state of the file.
WSUS for system updates (Score:2)
Darcs (Score:2, Informative)
Only drawback is that it is quite slow with really big repositories (e.g. linux kernel).
svn trick (Score:5, Informative)
PATH train [nynj.net] schedule online
Re: (Score:2)
Re: (Score:2)
This is my solution.. there are many like it, (Score:2)
I use vice versa pro
http://www.tgrmn.com/ [tgrmn.com] disclaimer, I'm just a customer
It lets me sync files across different directories.. and if it finds changes, it has an option to archive a copy of what was there before in a third directory, with a date/time stamp.
you can set it to retain X# of copies, or for x# of days.. I have it set to automatically run on any change in the
mydocs folder on my pc at work, or my pc at home.. if I open a file at home and modify it, I can rest easy knowing the cha
CVS (Score:2)
svn (Score:1)
Re: (Score:2, Insightful)
So yes, you can easily use ssh identities, or none at all and they have to type in their username/password every time.
Whatever you do (Score:1)
They will gladly charge an arm and a leg for something as good (or worse) as CVS
Yes, I think you're thinking what I'm thinking and it is beyond me why people pay so much money for that crap. Probably because in their minds expensive == good
cfengine (Score:4, Informative)
http://www.cfengine.org/ [cfengine.org]
Re: (Score:1, Insightful)
Re: (Score:3, Insightful)
- doug
Break the problem down (Score:2)
I've been thinking about doing a project like this. I would probably use rdist+ssh/nfs/samba to copy the files to a central host, and run a cron job that calls a Perl script to check in changes regularly, only if something has changed; perhaps along with selections from
Easy. (Score:1)
That's what you get for not listing cost effectiveness or efficiency amongst your requirements. Be more careful in future.
SVN for Configuration Management (Score:1)
- Revision control (Which includes all the things you do in software engineering: tagging, branching, merging, diffing, patching.)
- Excellent cross-platform support
- Several choices for client connectivity. HTTP(S)/mod_dav and SSH are the most popular.
That said, Subversion is NOT just for managing traditional software projects. There are many other types of controlled resources that require the features above. In our case (a large Uni
/etc under SVN control (Score:1)
It allows us to see when, what and - given the administrator provided this information when the file was committed - WHY changes have been applied. That's pretty important in an environment, where up to 9 administrator have access to the files.
Saves you from losing precious configurations and allows for easy rollback if a certain configuration change doesn't work. You can even use your config
Re: (Score:2)