使用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