Emerging technologies for system administrators
22 March 2007 18:47
If you're a system administrator you're probably aware of the challenge of maintaining the configuration on a number of machines. You're also probably aware of the challenge of restoring a machine to a known configuration after a crash or hardware failure. If you manage hundreds or even 1000s of machines, then you're probably keenly aware of keeping every one of those machines in sync as far as configuration goes.
If you manage a large number of machines you may use a tool like Cfengine. At $work we use it and it has served our needs fairly well, although with its problems at times. There are other such configuration management tools available. One that I have been following with some interest is Puppet, which aims to be a "next-generation" cfengine. Having looked at the two I have to say I like puppet's configuration syntax a little better, and overall it feels "cleaner."
Today I came across a couple of intriguing tools that could be stacked on top of puppet. One is Cft, Configuration file tracker, which, in the spirit of the Unix script command, allows you to begin a cft 'session', issue a number of system administration commands, end the session, and then spit out the puppet configuration files (known as manifests) to duplicate whatever changes you made in the cft session. So you install the OS on a machine, run Cft, configure to taste, take the resulting manifests, and easily replicate that configuration on a 1000 more machines.
Another tool comes from the same idea behind the various package managers like Redhat's rpm and Debian's yum. PRM, the Puppet Recipe Manager, "facilitates the distribution of 'recipes', canned system configurations. A recipe contains the answer to a specific configuration question like 'How do I setup a forward-only postfix server' in a form that can be easily fed into Puppet." This takes the idea of yum and apt-get, and extends them not just to packages, but to entire system configurations.
I can imagine over time, as the public collection of configuration recipes grows, that it will be come possible to extend this one level further, to that of configuring entire clusters of machines. yum install web-farm. yum install 3-tier e-commerce architecture. My job keeps getting easier and easier :-).
Update: One more cool tool out of et.redhat.com, Virt-factory. The website describes it better than I can here. I'm very interested because at $work a few years ago, I developed a database-backed web-app to maintain information about our machines, which could spit out kickstart files for any of our machines on demand. This has made it easy to provision and re-provision new systems as needed. Virt-factory looks to take that kind of idea into the virtualization realm. This is a declarative model applied to system administration. Essentially, I define the 'what', and these tools worry about the 'how'.
One other nice thing about Virt-factory is that it will provide an XMLRPC API as well as a Web GUI for interacting with it, something I always wanted to do with my system, but never got around to doing. One more lego for my playground.