More Lessons Learned with VHD's
After I installed the v1.6 Azure SDK, I discovered a problem while attempting to upload a VHD to Azure. I followed all of the steps for creating the VMRole, including installing the WaIntegrationComponents-x64.msi from the
wavmroleic.iso, but when I ran the csupload command, after it mounted the VHD for the verification step, it failed with this message:
Cannot find the VM Role Agent.
Failed the Verification tests.
Cannot prepare VHD e:\VMRole.vhd
Thinking that I might have installed the wrong Azure Integration Components, I fired up the Virtual Machine, uninstalled the Azure Integration Components, and then re-installed them after double checking that I was using
the latest (v1.6) version. I ran sysprep again and tried the csupload again but received the same error.
Next, I decided to try uploading the VHD using the HPC management console rather than the csupload utility. The upload was successful, but I was not able to provision a VMRole using that VHD. After spinning for an
hour, the Azure Management Portal displayed an error message indicating that it could not connect and that the integration components might be missing. So, the csupload utility actually did a better job verifying the image than the HPC image upload wizard did.
At this point, I was ready to give up on trying to use VMRoles altogether. However, in my research, I discovered a blurb on this website which stated:
Window Azure Integration Components incompatible with Web Server Edition of Windows Server 2008 R2
Applies to: Windows Azure SDK 1.3 and later
Symptom: VM Roles based in Window Web Server Edition are stuck with a status “Setting Up” in the Windows Azure Portal.
Cause: The Windows Azure Integration Components depend on a system assembly which is not available in Windows Web Server 2008 R2
Resolution: Use Windows Server 2008 R2 Enterprise instead of Windows Web Server 2008 R2.
I had not used Web Server Edition when I built my VHD, I had used Standard Edition. But since the resolution advice did not recommend the Standard edition, I wondered if there might be an incompatibility there as
well, even though on this site it says Standard should work.
So, I started from scratch and created a new VHD using the Enterprise edition of the OS and the integration components from the v1.6 Azure SDK.
The new image passed the validation step, uploaded and successfully spun up as a VMRole in Azure.
This may not be a new condition. I have deleted my old VHD’s so I cannot say for sure whether the old images that worked in the past were built on Standard or Enterprise. The bottom line is that there seems to be an incompatibility between the v1.6 Azure SDK and the Standard edition of the OS, so I will be using the Enterprise Edition as the base for all of my VMRoles in the future.