上面使用 Azure Powershell 相对简单:
$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 失败时:
BadRequest:名称为“c1cmdb”的实体类型“PersistentVMRole”的属性“OSDisk”为空或为空。
是的,我省略了该属性,但为什么我必须首先指定它?