Back in October 2010 I wrote about the PDC 2010 that the VM Role was bringing IaaS in the Windows Azure offering.
Well, I was wrong: VM role isn’t IaaS at all.
VM roles VMs are stateless as Web & Worker roles are.
This means you provide a .vhd to Azure ; when the VM gets instantiated, the original disk image is your .vhd. The image will then evolve when the software on the VM decide to write on the .vhd. But when the VM gets teared down for some reason (e.g. upgrades, failures), the .vhd disappear and the original .vhd is re-installed in a new VM!
In that sense, Azure doesn’t keep the state of a VM role, hence it is stateless.
Also, VM Role supports a narrow choice of configuration. Basically, you need to be Windows 2008 R2 64 bits with some Azure bits installed on the VM.
What are VM role useful for then?
VM Role weren’t meant to be IaaS. This was reported by some people (like me, mea culpa) who jumped the gun a bit fast at the fact that you provided a .vhd as with IaaS provider. VM Role were actually meant as a complement to other stateless roles, such as web role. When the install script of a role is fairly complicated (e.g. you need to install a huge software on it), it becomes more practical to do that on one VM, take a snapshot and use that as a VM Role. The start-up time of such a role will than be much faster than installing all the bits every time.