Automating Windows Azure Virtual Machines with Microsoft System Center 2012 Service Manager

Greetings all,
Today I take a break from the more technical underlining of development tasks to peek into the Infrastructure and Operations management side of things. This brief talk will explain how easy it is to take Microsoft System Center 2012 Service Manager, Orchestrator Runbooks, and Microsoft Azure Virtual Machines to integrate and automate provisioning of new VM instances.
Before I get into specifics, let’s discuss these topics from a high overview to make sure everyone understands the topic at hand.

Overview of System Center 2012 SP1

Microsoft System Center 2012 SP1 is a suite of applications produced by Microsoft for managing enterprise servers, client machines, inventory and asset tracking, enterprise applications, request offerings, problem management and incident reports and many more features. System Center 2012 is comprised of Operations Manager, Virtual Machine Manager, AppController, Data Protection Manager, Configuration Manager, Service Manager, and Orchestrator.

Operations Manager is used to monitor servers, such as SQL database, BizTalk Server and IIS Web Servers. This application can monitor when these servers go offline and when errors occur on these servers. This application can also notify groups of individuals responsible for the health and maintenance of these servers.

Virtual Machine Manager is an application used to manage, create and monitor virtual machines created with Hyper-V. A virtual machine is a virtualized computer that is running in the memory process of a Host Hyper Visor application (Hyper-V). The Hyper Visor application divides up it’s hardware, memory and other assets to provide resources for the virtual machine image. AppController is an application that allows companies to manage their virtual machines created in Virtual Machine Manager from s self provisioning perspective. A Web site can be configured to allow internal employees request and self provision virtual machines across a private internal network, or even the public network known now adays as the public cloud.

Data Protection Manager is an application that allows you to backup and restore virtual machine hard drives, databases, and applications stored on network drives and network shares. It helps to automate the backup and restore process of large files and systems.

Configuration Manager is an application that allows companies to keep track of all hardware, and versions of software installed in a network. It can also be used as an inventory and asset tracking repository.

Microsoft System Center 2012 Service Manager

Service Manager is an application that allows enterprises to manage activities, change, incidents, problems, release and service request items. It also allows you to create your own form of item management. These items, are usually referred to as work items and can consist of something called a request offering, which is simply where an IT department can offer various capabilities to other internal departments. These capabilities, referred to in System Center as “Services” can refer to anything from Purchasing new laptops, to fixing the office telephone. Typically, when these services are offered, there must be a cost associated with them and managed so that the services can be billed to the appropriate department requesting the service. This is where Service Manager comes in. This application allows enterprises to create one or more of these services, as it applies to your business, and create a Request form to expose to internal departments to request this capability. There is also a self service aspect to this application as well, similar to the AppController for Virtual Machines. The self service aspect allows employees to request a service from a Web site configured to host these self service forms.

Service Manager Console Screencap

Which leads us up to the purpose of this posting. Service Manager easily allows you to create forms to expose “Services” or capabilities which an IT Department offer to its co-workers and departments it must service. AppController and VMM, allows employees to create Virtual Machines, and provision them within their private network (Private Cloud) or external network (Public Cloud). With these three applications, there is no bridge which allows you provision Windows Azure Public resources, such as Mobile Services, Azure Virtual Machines, Azure Storage accounts, and Azure Storage containers, Azure Networks, and etc.

With the implementation of Public Cloud offerings such as Windows Azure, it only makes sense to support this with a powerful suite of applications within System Center 2012 sp1. In order to do this, we must configure and develop business logic that can automate workflow and call out to the Public Cloud api’s.

Overview System Center Orchestrator 2012

Enter the world of Orchestrator. System Center Orchestrator contains something called “Runbooks”. This is an application that allows developers to further extend System Center suite to call out into the external world of Public Cloud offerings such as Windows Azure. A runbook is a graphical designer that allows a developer to configure and create some very fancy and complex workflows. It can do things like send an email when a request for a new telephone line is generated, or even automatically provision a new Windows Azure Virtual Machine instance when a request is generated. For those BizTalk Dev’s out there, think of a Runbook as similar to a WF Workflow, or a BizTalk Orchestration, except that it has it’s own editor as opposed to being hooked inside of Visual Studio .Net.

System Center Orcestrator Runbook Designer

Overview of Windows Azure

Windows Azure is Microsoft’s public cloud service offerings to everyone. It offers a multitude of capabilities. It supports Web Sites, Virtual Machines, Mobile Services, Cloud Services, SQL Databases, Storage Containers, BigData processing, Virtual Networks, SQL Reporting, Media Services, Active Directory and more.

Windows Azure Portal

When working with Windows Azure Virtual Machines, this is a service that Microsoft allows you to create your own virtualized computer and have it hosted and maintained in Windows Azure. This means if you have company, and you need to hire a contractor or employee to do some work, you can create a virtualized computer configured in your internal network to access your sensitive information. The Data never has to leave your controlled and monitored environment. It’s very easy to setup a server, or a workstation for virtualization. Below is a screenshot of a new VM wizard showing you just how easy it is.

Azure VM Wizard Screenshot

How it all fits together to Automate Windows Azure Virtual Machines with System Center 2012 Service Manager

So now that you overstand what System Center 2012 SP1 is, and you overstand Windows Azure Virtual Machines, let’s discuss how we can integrate the 2 together to automate the Windows Azure wizard. First thing we need is a way that Service Manager to maintain and monitor our requests for provisioning a Windows Azure virtual machine.

Service Manager gives you the ability to create a Service Request item. The only catch is that the out of the box Service Request items does not contain any field entries for DNS Name, Image Size, Image Name, Password, Affinity Group or Locations as the Windows Azure Wizard supports. This means we will need to extend the Service Request item in Service Manager. Extending the Service Manger Service Request item requires that you create your own class and derive from the base class to extend it. This is a topic for another post, however I will way it very easy to do, and once it’s done you can create a custom form to display inside Service Manager to keep track of these special fields and more.

Windows Azure Provision Request Form

After you have created a custom form, you can use System Center Orchestrator to create a custom Runbook to retrieve the filled out entries in the Request form and automate the process for provisioning Windows Azure Virtual Machines. Below is an example of a runbook created to monitor the the Request Form being filled out and crated, and then invoking the Windows Azure Runbooks activities to provision the Windows Azure Virtual Machines.