At work, I’ve managed to wedge myself into a pretty wicked and useful niche: operating system deployments. The place I work is a multi-platform software development company, doing R&D in the healthcare software arena. In simpler terms, we make healthcare software that runs on Linux, Windows, Solaris, and OS X – so pretty much all of the major operating systems that I know of.
I started off with the company about 7 years ago in the software testing department, and one of the biggest hassles we had at the time was what we call staging. We’d get a new build of a product from the development team, and have to test it from installation through to migration to the next release. We found that, over time, our Windows installations on the test machines would get to the point where we’d be reporting bugs that upon investigation would turn out to be artifacts of a previous installation, so we started reinstalling the entire operating system from scratch every time we got a new build.
Now, here’s the situation: you’ve got a group of around 40 testers. Only a handful of them have any real IT experience, or any software background for that matter (myself included). We had no support from the IT group for many different reasons, not the least of which was because we demanded the freedom to do anything we needed to do with the test equipment. So, inevitably, any time a new build showed up, we’d fumble around, looking for the right OS media, and – in the case of Windows – a valid license key that we could use to reinstall the OS.
Needless to say, this was a major hassle.
Fast-forward to today, and you won’t find any operating system media, nor is there any need to fumble around looking for license keys. Instead, you’ll find PXE-capable hardware and a network booting infrastructure capable of installing Windows, RedHat, Ubuntu, FedoraCore, and Solaris, all built and supported using free and – for the most part – open source software (with the exception of the DHCP server, but that’s still under IT’s control, so it’s pretty much a hands-off system, anyway; all of the others are managed by me ;).
It was surprisingly easy to set up, in some ways; in others, there’s a lot of esoteric fiddly bits that needed tweaking, but, in the end, even the folks with the least experience installing operating systems can have a new system up and running in five minutes or less of their time. In almost all cases, the only information requested of the user is a hostname and how to layout the available disks, and the deployment system takes care of the rest.
I’ll be talking about the architecture and capabilities of the system over the next few posts, starting at… well… the start: how to get PXE booting working.