Windows Azure: Waiting for Checkpoints

I spend a heap of time building and configuring virtual machines to test out different configurations. For example, for my recent Microsoft Press Training Guides (70-411) and (70-412), I wrote the book so that readers could follow instructions to build a small lab of four virtual machines. At the end of each chapter were a set of long exercises that allowed the readers to actually build and configure what I’d discussed in the chapter. At the end of the exercises, readers are instructed to revert to a checkpoint of the virtual machines taken when they create the lab. Across the books there are 24 different labs that start off from the same configuration. An advantage to this as a reader is that you can dive in to any chapter and perform the exercise because other than building the lab at the beginning, no one chapter is dependent on you performing configuration tasks in another chapter.

When I want a “one off” set of virtual machines these days, I often spin them up in Azure. But I can’t really do that with the virtual machines I use when writing, because although it’s possible to spin up a server, install applications, and make configuration changes, there’s no “official” way to take a checkpoint of the VM configuration, allowing me to roll back changes made. Readers creating their own lab to follow along with my book would be unable to do so, unless they wanted to rebuild their configuration after each chapter.

Checkpoints are a crucial part of the testing process as they allow systems administrators to roll configurations back and forward. There’s a way you can do checkpoints with Windows Azure VMs, but it also involves a fair amount of mucking about. It’s certainly not something that’s supported in the Windows Azure management pages.

My suspicion is that at some point in the not too distant future, checkpoints will appear as a Windows Azure feature. Until then, when it comes to testing VMs where I need to roll back quickly to specific points in time of a VM’s configuration, I’ll still need to use my local instance of Hyper-V.