Azure Windows 门户:无法保存图像以创建 VHD
Azure Windows Portal: Unable to Save Image in order to create VHD
我正在尝试在 Azure 市场上发布我的产品。
我正在使用 windows 2012 R2 数据中心,用于从 portal.azure.com
创建虚拟机。我遵循了 运行 系统准备、概括它然后创建容器的步骤。
之后当我们运行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。我做错了什么吗?
请指导!
托管磁盘不同于非托管磁盘。我们可以使用Powershell创建一个托管镜像,但是在我们的存储账户中找不到这个新镜像,托管磁盘由Azure管理,我们不能直接管理它。
要创建 VM 的托管映像,我们可以按照以下步骤操作:
运行 sysprep 到 generalize windows 虚拟机。(此过程 deletes 原始虚拟机 captured.Prior要捕获 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
完成后,我们可以在这里找到这张图片:
有关创建托管图像的更多信息,请参阅此 link。
顺便说一下,我们应该使用 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...
@Jason Ye:我能够解决我的问题并发布。我停止使用 powershell,只使用 azure portal 来完成所有步骤。提供的 MS 文档是零散的,新旧版本被组合在一起,即使它们已被弃用。它们的编写方式假设 reader 已经体验过做事。
所以在完成大量工作之后,我最终想出了这些步骤:
- 计算新 VM Windows Server 2012 R2 Datacenter。
- 按照创建步骤操作,但使用非托管磁盘来管理存储帐户。跟踪您提供的所有名称,特别是 VM、存储帐户名称和 username/password。此身份验证将在步骤 5 中使用。
- 创建后,VHD url 存储在创建的存储帐户中,也可以在 VM 下的“磁盘”部分中看到(显示 127Gib 大小)。
- 使用您在步骤 2/3 中创建 VM 时提供的凭据,使用门户上的 'Connect' 按钮和 rdp 登录 VM。如果您没有看到,则需要在入站规则中添加 rdp 端口。
- 登录后,检查 运行 windows 所需的更新(可选)并安装您的软件并执行软件所需的任何操作。
- 完成此操作后,运行 使用通用化和关闭选项的系统准备。
- Sysprep 关闭虚拟机,这会将虚拟机在 Azure 门户中的状态更改为已停止(已解除分配)。
- 点击图片->添加创建图片,如下图。使用新资源组并在存储 Blob 字段中,浏览在步骤 3 中创建的存储帐户。
- 您的存储帐户将有一个默认名称为 'vhds' 的容器。您的 .vhd 在此文件夹中。如果你没有看到你的帐户,你要么检查了错误的名称,要么你最终创建了一个托管磁盘。
- 创建映像后,从新创建的映像创建 VM。在控制台中,如果您单击此图像,则会出现一个选项 'Create VM'(使用上面为图像创建的现有资源组)。这次是托管 VM,因为 VM 是从映像创建的(在“i”部分中提到)。
- 您可以登录到这个新创建的(第二个)VM 并检查您的数据,如果它在 c: 驱动器的文件夹中。如果您没有看到 'Connect' 按钮,请在入站规则中添加 rdp 端口。
- 在步骤 4/5 中单击门户中的“停止”按钮停止 VM。
- 下载并安装 Microsoft 存储资源管理器。
- 搜索在步骤 2/3 中创建的存储帐户。展开它并转到最低层级。单击它,在右侧菜单中,您将看到您的 vhd。右键单击 'Get Shared Access Signature'。
- Select 'Generalize...' 复选框。输入当前日期前一天的开始日期和当前日期后一个月的到期日期(当前日期 > 7 天)。复制签名 url 并保存。
- 现在,转到发布门户:https://cloudpartner.azure.com 并创建报价。填写必填字段。在 SKU 的选项卡中,您必须添加一个新的 VM 映像,其中磁盘版本可以是 number.number.number 格式的任何内容,并且 OS VHD URL 将是上面复制的签名 url。
在 Atihska 步骤中,在 Sysprep 之后,机器将关闭并且状态将显示为已停止但未停止(解除分配)。对于释放,您需要 运行 下面的 powershell 命令。
Stop-AzureRMVM -ResourceGroupName ResourceGroup -Name VMName
Set-AzureRMVM -ResourceGroupName ResourceGroup -Name VMName -Generalized
我正在尝试在 Azure 市场上发布我的产品。
我正在使用 windows 2012 R2 数据中心,用于从 portal.azure.com
创建虚拟机。我遵循了 运行 系统准备、概括它然后创建容器的步骤。
之后当我们运行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。我做错了什么吗?
请指导!
托管磁盘不同于非托管磁盘。我们可以使用Powershell创建一个托管镜像,但是在我们的存储账户中找不到这个新镜像,托管磁盘由Azure管理,我们不能直接管理它。
要创建 VM 的托管映像,我们可以按照以下步骤操作:
运行 sysprep 到 generalize windows 虚拟机。(此过程 deletes 原始虚拟机 captured.Prior要捕获 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
完成后,我们可以在这里找到这张图片:
有关创建托管图像的更多信息,请参阅此 link。
顺便说一下,我们应该使用 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...
@Jason Ye:我能够解决我的问题并发布。我停止使用 powershell,只使用 azure portal 来完成所有步骤。提供的 MS 文档是零散的,新旧版本被组合在一起,即使它们已被弃用。它们的编写方式假设 reader 已经体验过做事。
所以在完成大量工作之后,我最终想出了这些步骤:
- 计算新 VM Windows Server 2012 R2 Datacenter。
- 按照创建步骤操作,但使用非托管磁盘来管理存储帐户。跟踪您提供的所有名称,特别是 VM、存储帐户名称和 username/password。此身份验证将在步骤 5 中使用。
- 创建后,VHD url 存储在创建的存储帐户中,也可以在 VM 下的“磁盘”部分中看到(显示 127Gib 大小)。
- 使用您在步骤 2/3 中创建 VM 时提供的凭据,使用门户上的 'Connect' 按钮和 rdp 登录 VM。如果您没有看到,则需要在入站规则中添加 rdp 端口。
- 登录后,检查 运行 windows 所需的更新(可选)并安装您的软件并执行软件所需的任何操作。
- 完成此操作后,运行 使用通用化和关闭选项的系统准备。
- Sysprep 关闭虚拟机,这会将虚拟机在 Azure 门户中的状态更改为已停止(已解除分配)。
- 点击图片->添加创建图片,如下图。使用新资源组并在存储 Blob 字段中,浏览在步骤 3 中创建的存储帐户。
- 您的存储帐户将有一个默认名称为 'vhds' 的容器。您的 .vhd 在此文件夹中。如果你没有看到你的帐户,你要么检查了错误的名称,要么你最终创建了一个托管磁盘。
- 创建映像后,从新创建的映像创建 VM。在控制台中,如果您单击此图像,则会出现一个选项 'Create VM'(使用上面为图像创建的现有资源组)。这次是托管 VM,因为 VM 是从映像创建的(在“i”部分中提到)。
- 您可以登录到这个新创建的(第二个)VM 并检查您的数据,如果它在 c: 驱动器的文件夹中。如果您没有看到 'Connect' 按钮,请在入站规则中添加 rdp 端口。
- 在步骤 4/5 中单击门户中的“停止”按钮停止 VM。
- 下载并安装 Microsoft 存储资源管理器。
- 搜索在步骤 2/3 中创建的存储帐户。展开它并转到最低层级。单击它,在右侧菜单中,您将看到您的 vhd。右键单击 'Get Shared Access Signature'。
- Select 'Generalize...' 复选框。输入当前日期前一天的开始日期和当前日期后一个月的到期日期(当前日期 > 7 天)。复制签名 url 并保存。
- 现在,转到发布门户:https://cloudpartner.azure.com 并创建报价。填写必填字段。在 SKU 的选项卡中,您必须添加一个新的 VM 映像,其中磁盘版本可以是 number.number.number 格式的任何内容,并且 OS VHD URL 将是上面复制的签名 url。
在 Atihska 步骤中,在 Sysprep 之后,机器将关闭并且状态将显示为已停止但未停止(解除分配)。对于释放,您需要 运行 下面的 powershell 命令。
Stop-AzureRMVM -ResourceGroupName ResourceGroup -Name VMName
Set-AzureRMVM -ResourceGroupName ResourceGroup -Name VMName -Generalized