通过 C# 从市场图像提升 Azure VM
Raise Azure VM from marketplace image via C#
无法以编程方式从 marketplace image 提升 azure VM。
代码:
var linuxVM = await _azure.VirtualMachines.Define(linuxVmName)
.WithRegion(Region)
.WithExistingResourceGroup(rgName)
.WithNewPrimaryNetwork("10.0.0.0/28")
.WithPrimaryPrivateIPAddressDynamic()
.WithoutPrimaryPublicIPAddress()
.WithSpecificLinuxImageVersion(new ImageReference())
.WithRootUsername(userName)
.WithRootPassword(password)
.WithSize(VirtualMachineSizeTypes.StandardNC6sV3)
.WithPlan(new PurchasePlan("nvidia", "ngc-base-version-20-10-1", "ngc_azure_17_11"))
.CreateAsync();
在 Azure 中,我为给定图像启用了“想要以编程方式部署?开始吧”(如 here 所述)。
选择图像的方法有多种选择,不确定应该使用哪种方法以及使用哪些参数。尝试了几种组合,但都返回了各种错误消息。
没有找到更详细的代码示例this(其中没有说明如何使用来自市场的图像)。
编辑:
上面的代码returns这个异常:
Microsoft.Rest.Azure.CloudException: 'This resource was created without a plan. A new plan cannot be associated with an update.'
使用更多填充参数的另一次尝试导致相同的异常:
.WithSpecificLinuxImageVersion(new ImageReference(new ImageReferenceInner(
publisher: "nvidia",
offer: "ngc_azure_17_11",
sku: "ngc-base-version-20-10-1"
)))
缺少的参数是图像的版本。提升图像的代码如下所示:
var vm = await _azure.VirtualMachines.Define(linuxVmName)
.WithRegion(_region)
.WithExistingResourceGroup(_rgName)
.WithNewPrimaryNetwork("10.0.0.0/28")
.WithPrimaryPrivateIPAddressDynamic()
.WithoutPrimaryPublicIPAddress()
.WithSpecificLinuxImageVersion(new ImageReference(new ImageReferenceInner(
publisher: "nvidia",
offer: "ngc_azure_17_11",
sku: "ngc-base-version-20-10-1",
version: "20.10.1"
)))
.WithRootUsername(userName)
.WithRootPassword(password)
.WithSize(VirtualMachineSizeTypes.StandardNC6sV3)
.WithPlan(new PurchasePlan("nvidia", "ngc-base-version-20-10-1", "ngc_azure_17_11"))
.CreateAsync();
可以在 UI 中找到版本:
也可以通过 CLI 获取图像的所有详细信息:
Get-AzVMImageOffer -Location "West Europe" -PublisherName nvidia
可以找到更全面的指南here
无法以编程方式从 marketplace image 提升 azure VM。
代码:
var linuxVM = await _azure.VirtualMachines.Define(linuxVmName)
.WithRegion(Region)
.WithExistingResourceGroup(rgName)
.WithNewPrimaryNetwork("10.0.0.0/28")
.WithPrimaryPrivateIPAddressDynamic()
.WithoutPrimaryPublicIPAddress()
.WithSpecificLinuxImageVersion(new ImageReference())
.WithRootUsername(userName)
.WithRootPassword(password)
.WithSize(VirtualMachineSizeTypes.StandardNC6sV3)
.WithPlan(new PurchasePlan("nvidia", "ngc-base-version-20-10-1", "ngc_azure_17_11"))
.CreateAsync();
在 Azure 中,我为给定图像启用了“想要以编程方式部署?开始吧”(如 here 所述)。
选择图像的方法有多种选择,不确定应该使用哪种方法以及使用哪些参数。尝试了几种组合,但都返回了各种错误消息。
没有找到更详细的代码示例this(其中没有说明如何使用来自市场的图像)。
编辑:
上面的代码returns这个异常:
Microsoft.Rest.Azure.CloudException: 'This resource was created without a plan. A new plan cannot be associated with an update.'
使用更多填充参数的另一次尝试导致相同的异常:
.WithSpecificLinuxImageVersion(new ImageReference(new ImageReferenceInner(
publisher: "nvidia",
offer: "ngc_azure_17_11",
sku: "ngc-base-version-20-10-1"
)))
缺少的参数是图像的版本。提升图像的代码如下所示:
var vm = await _azure.VirtualMachines.Define(linuxVmName)
.WithRegion(_region)
.WithExistingResourceGroup(_rgName)
.WithNewPrimaryNetwork("10.0.0.0/28")
.WithPrimaryPrivateIPAddressDynamic()
.WithoutPrimaryPublicIPAddress()
.WithSpecificLinuxImageVersion(new ImageReference(new ImageReferenceInner(
publisher: "nvidia",
offer: "ngc_azure_17_11",
sku: "ngc-base-version-20-10-1",
version: "20.10.1"
)))
.WithRootUsername(userName)
.WithRootPassword(password)
.WithSize(VirtualMachineSizeTypes.StandardNC6sV3)
.WithPlan(new PurchasePlan("nvidia", "ngc-base-version-20-10-1", "ngc_azure_17_11"))
.CreateAsync();
可以在 UI 中找到版本:
也可以通过 CLI 获取图像的所有详细信息:
Get-AzVMImageOffer -Location "West Europe" -PublisherName nvidia
可以找到更全面的指南here