gpt4 book ai didi

c# - 通过捕获的镜像以编程方式创建 Azure VM

转载 作者:行者123 更新时间:2023-12-02 23:13:55 25 4
gpt4 key购买 nike

使用 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: Property 'OSDisk' for entity type 'PersistentVMRole' with name 'c1cmdb' is null or empty.

是的,我省略了该属性,但为什么我必须首先指定它?

最佳答案

您的 CreateDeploymentAsync() 调用似乎正在尝试创建新的 VM(也称为角色),但未指定某些必填字段。创建部署时,它还会启动其第一个虚拟机。

您必须指定原始角色中缺少的信息,因为您的请求中没有足够的信息来创建虚拟机。如果您比较 RoleVirtualMachineCreateParameters 的接口(interface),您应该注意到很多相似之处 - 它们或多或少共享相同的职责。您是否尝试过在初始调用中从角色中的 VmImage 指定实际 VM?这样你可能会更幸运。 :)

关于c# - 通过捕获的镜像以编程方式创建 Azure VM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25534163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com