如何在 Azure 上使用自定义映像创建虚拟机?

如何在 Azure 上使用自定义映像创建虚拟机?

我在使用自定义映像在 Azure 上启动 VM 时遇到问题。

我如何准备自定义图像:

  1. 我有一个基于来自 Azure 市场的图像的虚拟机正在运行。
  2. 我停止了该虚拟机并导出了操作系统磁盘(下载了 VHD 文件)。
  3. 我将该 VHD 文件作为 BLOB 上传到 Azure 上的存储帐户。
  4. 我创建了一个新的图像(图像 - >创建),选择之前上传的 VHD 文件作为“存储 Blob”。

通过 UI 启动虚拟机

  1. 当我尝试通过 Azure Web UI 使用自定义映像创建新的 VM 时,部署失败并显示以下错误消息:
    {
      "code": "ResourceDeploymentFailure",
      "message": "The resource write operation failed to complete successfully, because it reached terminal provisioning state 'Failed'."
    }

通过 Azure Golang SDK 启动 VM

  1. 当我尝试从代码级别启动虚拟机并armcompute.VirtualMachineProperties用图像 ID 填充时:
            StorageProfile: &armcompute.StorageProfile{
                ImageReference: &armcompute.ImageReference{
                    ID: to.Ptr("/subscriptions/MY_SUBSCRIPTION/resourceGroups/MY_RESOURCE_GROUP/providers/Microsoft.Compute/images/MY_IMAGE_NAME"), 
                },

执行VirtualMachinesClient.BeginCreateOrUpdate方法时,我收到以下错误:

从 Marketplace 映像或源自 Marketplace 映像的自定义映像创建虚拟机需要请求中的计划信息

这是否意味着我总是需要记住我的自定义映像基于哪个 Marketplace 映像?我计划根据在不同系统上运行的虚拟机创建几个不同的自定义映像,我认为以后要使用这些映像,只需映像 ID 就足够了。

当然,当我Plan用一些随机值填充字段时,会出现错误:

未找到优惠 ID 为“YOUR_OFFER”的优惠。

答案1

您不能只从 Marketplace VM 创建映像并为其提供随机优惠详细信息。您从 Marketplace VM 创建的任何映像都将具有与原始 VM 相同的优惠要求。否则,这将是一个非常容易的方式,可以不支付原始 Marketplace VM 拥有的任何许可。您可以找到有关如何提供优惠 ID 的详细信息这里

其次,您不能直接将现有托管磁盘导出到 blob,然后将其用作映像来创建新的 VM。您需要按照以下步骤完成创建映像的过程这里。请注意,这是一种传统方法,更好的选择是使用Azure 计算库

相关内容