使用Azure的PowerShell中的上述創建Azure的VM是比較直接的:編程方式從拍攝的圖像
$image = "captured-vm-image-xx"
New-AzureService -ServiceName $servicename -Location $region
$config = New-AzureVMConfig -Name $servicename -InstanceSize ExtraSmall -AvailabilitySetName $avsetname -ImageName $image
New-AzureVM -ServiceName $servicename -VMs $config -VNetName $vnetname -WaitForBoot
現在我使用Azure的2.4 SDK試圖口上面的C#代碼:
var vmname = ComputeClusterMasterName(clusterName);
var p1 = new VirtualMachineCreateDeploymentParameters
{
Name = vmname,
Roles = new List<Role>
{
new Role()
{
RoleType = "PersistentVMRole",
RoleName = vmname,
RoleSize = "ExtraSmall",
ConfigurationSets = new List<ConfigurationSet>(),
},
},
DeploymentSlot = DeploymentSlot.Production,
Label = vmname
};
await client.VirtualMachines.CreateDeploymentAsync(clusterName, p1);
var parms = new VirtualMachineCreateParameters();
parms.AvailabilitySetName = clusterName;
parms.RoleName = vmname;
parms.RoleSize = "ExtraSmall";
parms.VMImageName = "captured-vm-image-xx";
await client.VirtualMachines.CreateAsync(cloudServiceName, vmname, parms);
當我運行上面的代碼CreateDeploymentAsync失敗:
錯誤請求:屬性 'OSDisk' 的實體類型「P ersistentVMRole'與 名稱'c1cmdb'爲空或空。
是的,我已經省略了那個屬性,但爲什麼我必須在第一個地方指定它?
原始VM是使用門戶手動創建的。我現在運氣不好嗎? – 2014-08-28 07:26:47
不,我不確定我明白你爲什麼認爲你運氣不好。 :)如果您嘗試將新虛擬機添加到現有部署中,請完全跳過CreateDeploymentAsync調用,並使用VirtualMachines.CreateAsync和現有的cloudservice,對吧? – 2014-08-28 15:15:16