In Windows Azure Pack you can deploy standalone virtual machines, which are directly mapped to VM Templates in Virtual Machine Manager. The VM Templates are limited to deploy an Operating System, without applications. The VM Template allows you to configure the number of CPUs and the amount of Memory assigned to it. Since the standalone Virtual Machine in Windows Azure Pack is a direct mapping to the VM Template in Virtual Machine Manager, a virtual machine that is deployed by a tenant will be configured according to the size you specified in the VM template. If you would like to give a tenant the possibility to change the number of CPUs and amount of Memory assigned to virtual machine you can define hardware profiles in Virtual Machine Manager and add them to the plan that the tenant has a subscription on.
Virtual Machine Manager also provides Service Templates. Service Templates use VM Templates as building blocks and add a lot of functionality on top of them. Scale-up, Scale-out, application integration, relation to deployed instances and versioning, just to name a few.
With the release of Windows Azure Pack a new feature called the VM Role was introduced. The VM Role is a Windows Azure Pack gallery item, that uses the service template engine in Virtual Machine Manager. It allows you to deploy a virtual machine with automated application installation. Most of the functionality that you might be familiar with from Service Templates are also present in the VM Role. For a good comparison have a look at this blog.
The VM Role exists of two parts. The Resource Definition is imported in to Windows Azure Pack and contains the fields to build up the deployment wizard and map to the Resource Extension. The Resource Extension is imported in to Virtual Machine Manager and contains the application logic. Virtual Machine Manager does not provide a Graphical User Interface for The Resource Extension. You can create new or edit existing Resource Definition and Resource Extension files with the VM Role Authoring Tool.
When you deploy your first VM Role, you will notice that the available sizes for the virtual machine are populated automatically.
The predefined list contains the following sizes.
Name | Description | CpuCount | MemoryInMB |
ExtraSmall | Extra Small Size VM | 1 | 768 |
Small | Small Size VM | 1 | 1792 |
Medium | Medium Size VM | 2 | 3584 |
Large | Large Size VM | 4 | 7168 |
ExtraLarge | Extra Large Size VM | 8 | 14336 |
A6 | A6 Size VM | 4 | 28672 |
A7 | A7 Size VM | 8 | 57344 |
The VM Role is also present in Windows Azure. If you have deployed a virtual machine in Windows Azure before you will immediately recognize these sizes. To minimize the differences for moving the VM Roles between Windows Azure Pack and Windows Azure, it makes sense to match the VM sizes between the two environments. But what if you have a company policy that dictated other VM sizes or you are Service Provider and would like to provide your own VM sizes. The VM Authoring Tool also has a JSON tab to show the actual code.