3

我正在尝试在 Azure 市场上发布我的产品。

我正在使用 Windows 2012 R2 Datacenter,用于从portal.azure.com. 我遵循了运行 sysprep、对其进行概括然后创建容器的步骤。

之后,当我们运行save-azurermvmimage捕获图像时,我得到the capture action is only supported on a virtual machine with blob based disks. please use the image resource apis to create an image from a managed virtual machine 所以我无法在容器中获取图像 url。有什么我做错了吗?请指导!

4

3 回答 3

7

托管磁盘与非托管磁盘不同。我们可以使用Powershell创建一个托管镜像,但是在我们的存储账户中找不到这个新镜像,托管磁盘由Azure管理,我们无法直接管理。

要创建 VM 的托管映像,我们可以按照以下步骤操作:

运行sysprep,对windows虚拟机进行泛化。(这个过程会在捕获后删除原始虚拟机。在捕获Azure虚拟机的映像之前,建议备份目标虚拟机。)

$vmName = "myVM" 
$rgName = "myResourceGroup" 
$location = "EastUS" 
$imageName = "myImage"
Stop-AzureRmVM -ResourceGroupName $rgName -Name $vmName -Force
Set-AzureRmVm -ResourceGroupName $rgName -Name $vmName -Generalized
$vm = Get-AzureRmVM -Name $vmName -ResourceGroupName $rgName
$image = New-AzureRmImageConfig -Location $location -SourceVirtualMachineId $vm.ID 
New-AzureRmImage -Image $image -ImageName $imageName -ResourceGroupName $rgName

完成后,我们可以在这里找到这张图片: 在此处输入图像描述

有关创建托管映像的更多信息,请参阅此链接

顺便说一句,我们应该使用 Azure PowerShell 3.7.0 或更高版本。

PS C:\Users> Get-Module -ListAvailable -Name Azure -Refresh


    Directory: C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement


ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   3.7.0      Azure                               {Get-AzureAutomationCertificate, Get-AzureAutomationConnec...
于 2017-06-09T01:49:59.320 回答
1

@Jason Ye:我能够解决我的问题并发布。我停止使用 powershell,只使用 azure 门户来完成所有步骤。提供的 MS 文档是零散的,即使新旧版本已被弃用,它们也会组合在一起。它们的编写方式假设读者已经体验过做事。

因此,在完成大量工作后,我最终想出了以下步骤:

  1. 计算新的 VM Windows Server 2012 R2 Datacenter。
  2. 按照创建步骤,但使用非托管磁盘来管理存储帐户。跟踪您提供的所有名称,特别是 VM、存储帐户名称和用户名/密码。此身份验证将在第 5 步中使用。
  3. 创建后,VHD url 将存储在创建的存储帐户中,该帐户也可以在 VM 下的磁盘部分中看到(显示 127Gib 大小)。
  4. 使用您在步骤 2/3 创建 VM 时提供的凭据使用门户上的“连接”按钮和 rdp 登录到 VM。如果您没有看到,则需要在入站规则中添加 rdp 端口​​。
  5. 登录后,检查并运行 Windows 所需的更新(保留可选)并安装您的软件并执行您的软件所需的任何操作。
  6. 完成后,使用 Generalize 和 Shutdown 选项运行 sysprep。
  7. Sysprep 关闭虚拟机,这会将 Azure 门户中的虚拟机状态更改为已停止(解除分配)。
  8. 通过单击图像 -> 添加创建图像,如下所示。使用新资源组并在存储 Blob 字段中,浏览在步骤 3 中创建的存储帐户。
  9. 您的存储帐户将有一个默认名称为“vhds”的容器。您的 .vhd 位于此文件夹中。如果您没有看到您的帐户,则说明您检查的名称有误,或者您最终创建了托管磁盘。
  10. 创建映像后,从新创建的映像创建 VM。在控制台中,如果单击此图像,则会有一个选项“创建 VM”(使用上面为图像创建的现有资源组)。这次它是一个托管 VM,因为 VM 是从映像创建的(在“i”部分中提到)。
  11. 您可以登录到这个新创建的(第二个)VM 并检查您的数据,如果它位于 c: 驱动器的文件夹中。如果您没有看到“连接”按钮,请在入站规则中添加 rdp 端口​​。
  12. 通过单击门户中的停止按钮,在步骤 4/5 中停止 VM。
  13. 下载并安装 Microsoft 存储资源管理器。
  14. 搜索在步骤 2/3 中创建的存储帐户。展开它并转到最低层次结构。单击它并在右侧菜单中,您将看到您的 vhd。右键单击并“获取共享访问签名”。
  15. 选择“概括...”复选框。输入当前日期前一天的开始日期和当前日期后一个月的到期日期(距当前日期> 7 天)。复制签名网址并保存。
  16. 现在,转到发布门户:https ://cloudpartner.azure.com并创建报价。填写必要的字段。在 SKU 的选项卡中,您必须添加一个新的 VM 映像,其中磁盘版本可以是 number.number.number 格式的任何内容,OS VHD URL 将是上面复制的签名 URL。
于 2017-06-29T16:52:21.867 回答
0

在 Atihska 步骤中,在 Sysprep 之后,机器将关闭,状态将显示为已停止但未停止(已解除分配)。对于解除分配,您需要在 powershell 命令下运行。

Stop-AzureRMVM -ResourceGroupName ResourceGroup -Name VMName

Set-AzureRMVM -ResourceGroupName ResourceGroup -Name VMName -Generalized
于 2018-01-17T11:08:55.460 回答