ewtroan ([info]ewtroan) wrote,
@ 2009-04-16 18:36:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
A version to rule them all
I've been working on Conary for a long time now. For those who don't know, Conary is basically a version control system for deployed systems. We all use Subversion or whatever for our sources (and probably anything else that looks like source if you squint the slightest bit) for years now, but for some reason we don't use them for deployed systems.

At best, we use a loose collection of versions. Tools like dpkg and rpm (and apt and yum) have integrated the versions of software components into peoples minds pretty well. Questions like "which version of vi are you running" are easy to answer in the Linux world. Simple commands like "rpm -qp /bin/vi" will give you reasonable answers.

What that leaves is systems defined by, oh, 500 versions or so. Oh, and those versions probably don't include version information for your actual application or third party software products. Add those to the count.

What all this means is that those 10,000 servers you're running don't have a version each, they have 500 versions each. You can't go look at two of them and easily see if they're the same. You can't make two of them match without going through backflips. You can't ask what version a server was running last week because the question doesn't make sense; you have to ask what 500 versions it was running last week. It's like using RCS to manage all of your source files. You might get a tag to get some kind of consistency, but aren't git versions better? Finally a single version to describe the state of your source tree. A single way ("hg parent" in my world) to know what the heck is there.

Conary provides the same capability to running systems. Define your systems as Conary groups and have a single version. You need another system like that one? Just install the same version of the same group? You want to know what it was running last week? Look at what version of the group was on there last week (the rollback stack or /var/log/conary will both tell you). Do you need to downgrade? No problem.

I simply don't know how system management can scale without a version associated with a system. Not a piece of a system, but the entire system.



(3 comments) - (Post a new comment)

Configurations
[info]giles7777
2009-04-17 04:12 am UTC (link)
Does this include the values of operating system configuration files? What about database or application server configs? I find that changes to those have caused versioning problems for us that typically end with a conversation like "oh yea well I changed the configuration file but that can't be the cause of the problem can it...."

(Reply to this) (Thread)

Re: Configurations
[info]ewtroan
2009-04-17 05:11 am UTC (link)
Typically it does include those; folks build those configuration changes into the centralized repository. We have "derived packages", which let you change only the bits of a package you like while the rest stays the same. We also have (underdeveloped) capabilities around looking for change on an installed system and recording those changes in a repository.

(Reply to this) (Parent)

radmind transcripts
(Anonymous)
2009-04-17 07:16 pm UTC (link)
Radmind is a very useful tool for doing file-level checks/updates to a certain configuration. You can version-control the radmind transcripts (lists of files/checksums/timestamps), which would then allow you to deploy an identical configuration to multiple machines (or revert one machine to a previous configuration just by updating the command file for that server with the proper transcript revision and doing "ra.sh update").

It falls down if you need to keep an intact RPM database for RPM-based distros (unless you include the rpm db in the transcript), or if you need to make individual line changes to certain files (a la cfengine/puppet).

http://rsug.itd.umich.edu/software/radmind/

But I agree with your premise - having multiple servers that need to be "identical" but are not under some sort of "version control" is crazy from an admin perspective. Small differences will always creep in otherwise.

(Reply to this)


(3 comments) - (Post a new comment)

Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…