This week I digress once again from my intended progression of posts to deal with some real world issues …
Learning Tree’s “choice in the classroom” now offers attendees the option of working either with a partner or on their own when doing the hands-on exercises. As part of this initiative authors are reviewing classroom hardware requirements for each of their courses.
In our Office 365 course we feature a hands-on exercise where the students perform an actual cutover migration from Exchange 2010 Server on premises to Exchange Online in Office 365. This exercise requires one fully configured Exchange server per student team. Allowing students the option to work solo could potentially double the number of Exchange servers needed for an event. Note that this is essentially a load variation problem and is something for which the Infrastructure as a Service cloud delivery model is particularly well suited!
I had previously provisioned 12 EC2 servers and configured them in a VPC where each had an assigned Elastic IP address. This allows for all of the instances to remain stopped until the actual day in which they are needed in the class. The instructor can simply start as many machines as necessary based on the size of the class that week and how many students choose to work solo or in pairs. In this way we only incur instance run charges for when the machines are actually in use. When the instances are stopped there is a modest charge of $0.11 per GB per month. This works out to less than $50 per month for 12 Windows instances with 35 GB of provisioned storage each. It is relatively simple to extend this solution for 24 servers at very little additional cost.
There are some complications I encountered with an Exchange installation that made it impossible to simply clone existing instances. In fact I could not even start from a custom AMI where I had already installed Exchange. Making Exchange work for the exercise required that each server be on a separate Active Directory domain. Further, it required that a “real” UCC certificate (i.e. from a proper Certification Authority, not just self-signed) for a validated domain be installed on each machine.
Briefly, here are the steps I needed to go through:
I was able to script some of this using PowerShell. In actuality building each machine did require some manual effort. In this case, though, it was done as a one-time thing. I will no doubt continue to explore options for rapidly building these and other types of servers for use in the classroom. One area I would like to look at further is orchestrating the provisioning of Exchange server perhaps using something like RightScale’s Configuration Framework. That, however, will have to be a topic for another time.