There are many ways to deploy a Windows operating system in your virtual infrastructure.
Most of us don’t have the expensive cloud automation tools that vendors sell today, so we stick to the basics and use clones, templates, unattended XML files and home-grown scripting to get our OS deployment done.
But what if you had a truly automated process that could be used for both server and desktop OS deployment? And you could do both virtual and physical bare-metal OS deployment? And the OS deployment software was free?
I’ve been tinkering with Windows deployment in virtual infrastructures over the past few months and found different methods along the way. Not all suited my infrastructure, but any of them could work for you. Here’s the path I took on my search for a free, dynamic OS deployment method.
Using templates for OS deployment
The first OS deployment method I looked into was templates. On VMware, as well as other platforms, using templates to create multiple virtual machines (VMs) is a well-known and widely used practice. You create a VM with these steps:
- installing the VM with the original install media
- configuring/customizing the VM
- installing applications,
- updating the VM with patches and service packs
- running Sysprep
- and finally converting it to a static template.
Now that it’s a template, you can create what VMware calls customization scripts that enable small changes to certain aspects of a VM when it’s deployed from the template to an actual virtual server.
But these scripts are really just Sysprep setup files, and their capabilities are limited. This OS deployment method requires some extensive post-installation work, depending on the requirements of the deployment. Plus, you’ll have several templates, mostly static in nature, which consume quite a bit of valuable shared disk space. Overall, this is not my idea of a dynamic and scalable method for Windows deployment. It also requires vCenter Server, which is hardly free.
Open source OS deployment
I also looked at open source OS deployment methods. In the past, I’ve used an open source tool called the Ultimate Deployment Appliance (UDA), mainly for Linux and VMware ESX host deployment. It worked well, but it was somewhat difficult to navigate and required manual configurations to each ISO. Plus, Windows 7 deployments are still in beta (How long has this OS been out?) with version 2.0, and I decided not to pursue it.
I also found that Dell sells a deployment appliance called the Kace K2000, but two things bothered me about its description. First, it’s a much larger management tool, not just OS deployment software, which is overkill for my needs. And second, it isn’t free, so that put the nail in the coffin.
Microsoft Deployment Toolkit to the rescue
I was still looking for a good Windows deployment method, and a friend of mine sent me a link to the Microsoft Deployment Toolkit (MDT). Years ago, I researched MDT when it was a proprietary offering from Microsoft. Now MDT 2010 Update 1 is much more mature OS deployment software, better integrated with System Center Virtual Machine Manager, and best of all, it’s completely free* to everyone. It has a few prerequisites, but all of them are free as well, so I installed it to check out the Windows deployment possibilities.
Getting started with the MDT was easy, with its Microsoft Management Console-style interface and descriptive documentation. It also requires the Automated Installation Kit, which contains the core WinPE components necessary for OS deployment. Think of it this way: The MDT provides the back-end configuration for the front-end WinPE installation and OS deployment.
The MDT can also integrate with System Center Configuration Manager (SCCM) for a complete zero-touch Windows deployment method. You can also add the Office Customization Tool if you want to automate and customize Microsoft Office 2010 in your OS deployment.
I liked the idea of doing a lite-touch OS deployment instead, because SCCM isn’t free. I was really starting to like MDT, so I dove into the docs to learn as much as I could about this Windows deployment method.
As I began using the MDT, I ran into some very intelligent folks on the Web that had great implementations, ideas and scripts for Windows deployment tools. It was relatively easy to create a single sequence that could do virtual or physical OS deployment and provide selection screens and dropdowns for options.
Depending on which platform you use, installing drivers and applications is simple as well. One aspect that really made this OS deployment tool stick out was the ability to dynamically change the deployment or application on the fly -- incorporating flexible option selections and scripting -- for any install I wanted.
Diving into desktop deployment
I had soon completed all my Windows 2003 R2, 2008 and 2008 R2 OS deployments. I then ventured into the desktop OS, trying my luck with XP and Windows 7 as virtual desktops. After working out the kinks, configurations and scripting changes, the desktop deployments went off nearly without a hitch.
The only issues I encountered were single-application installs, which I knew would happen given the complexity of some of their installation routines. I also had a few driver issues when I started physical bare-metal OS deployments, which will happen no matter what method you use.
With the MDT, you have very granular control not only over the OS deployment itself, but also over the applications, drivers and update packages. And it uses the solid base of WinPE, which includes some of the OS deployment basics I mentioned above, such as unattended.xml files and home-grown scripting.
Overall, I was very pleased in my progress, but there is still more to learn and accomplish. OS deployments must fit your infrastructure’s size, feature needs and management capabilities, so I hope my search has give you some ideas for your own virtual infrastructure.
*The word “free” in Microsoft terminology usually means “not supported”. However, the MDT and AIK are fully supported, because they are considered to be “Solution Accelerators.”