可以从在存储帐户中存储为托管磁盘或非托管磁盘的通用 VM 中创建托管映像资源。 然后可以使用该映像创建多个 VM。

使用 Sysprep 通用化 Windows VM

Sysprep 将删除所有个人帐户信息及其他某些数据,并准备好要用作映像的计算机。 有关 Sysprep 的详细信息,请参阅如何使用 Sysprep:简介

确保 Sysprep 支持计算机上运行的服务器角色。 有关详细信息,请参阅 Sysprep Support for Server Roles

Important

如果在首次将 VHD 上传到 Azure 之前运行 Sysprep,请确保先准备好 VM,然后再运行 Sysprep。

  1. 登录到 Windows 虚拟机。
  2. 以管理员身份打开“命令提示符”窗口。 将目录切换到 %windir%\system32\sysprep,然后运行 sysprep.exe
  3. 在“系统准备工具”对话框中,选择“进入系统全新体验(OOBE)”,确保已选中“通用化”复选框。
  4. 在“关机选项”中选择“关机”。
  5. 单击 “确定”。

  6. 在 Sysprep 完成时,它会关闭虚拟机。 请勿重启 VM。

在门户中创建托管映像

  1. 打开 门户
  2. 在左侧菜单中,单击“虚拟机”,然后从列表中选择 VM。
  3. 在 VM 页的上部菜单中,单击“捕获”。
  4. 在“名称”中,键入想要用于映像的名称。
  5. 在“资源组”中,选择“新建”或键入名称,或选择“使用现有”并从下拉列表中选择要使用的资源组。
  6. 如果想要在创建映像后删除源 VM,选择“创建映像后自动删除此虚拟机”。
  7. 完成后,单击“创建”。
  8. 创建映像后,在资源组的资源列表中,你会看到它作为“映像”资源而出现。

使用 PowerShell 创建 VM 映像

直接从 VM 创建映像可确保映像中包含与 VM 关联的所有磁盘,包括 OS 磁盘和任何数据磁盘。 本示例演示如何从使用托管磁盘的 VM 创建托管映像。

在开始之前,请确保有最新版本的 AzureRM.Compute PowerShell 模块。 运行以下命令来安装该模块。

PowerShell复制
Install-Module AzureRM.Compute -RequiredVersion 2.6.0

有关详细信息,请参阅 Azure PowerShell 版本控制

  1. 创建一些变量。powershell $vmName = "myVM" $rgName = "myResourceGroup" $location = "ChinaEast" $imageName = "myImage"
  2. 确保 VM 已解除分配。

    PowerShell复制
    Stop-AzureRmVM -ResourceGroupName $rgName -Name $vmName -Force
  3. 将虚拟机的状态设置为“通用化”。

    PowerShell复制
    Set-AzureRmVm -ResourceGroupName $rgName -Name $vmName -Generalized
  4. 获取虚拟机。

    PowerShell复制
    $vm = Get-AzureRmVM -Name $vmName -ResourceGroupName $rgName
  5. 创建映像配置。

    PowerShell复制
    $image = New-AzureRmImageConfig -Location $location -SourceVirtualMachineId $vm.ID
  6. 创建映像。

    PowerShell复制
    New-AzureRmImage -Image $image -ImageName $imageName -ResourceGroupName $rgName

    使用 PowerShell 从托管磁盘创建映像

如果你只想创建 OS 磁盘的映像,还可通过将托管磁盘 ID 指定为 OS 磁盘来创建映像。

  1. 创建一些变量。

    PowerShell复制
    $vmName = "myVM"
    $rgName = "myResourceGroup"
    $location = "ChinaEast"
    $snapshotName = "mySnapshot"
    $imageName = "myImage"
  2. 获取 VM。

    PowerShell复制
    $vm = Get-AzureRmVm -Name myVM -ResourceGroupName $rgName
  3. 获取托管磁盘的 ID。

    PowerShell复制
    $diskID = $vm.StorageProfile.OsDisk.ManagedDisk.Id
  4. 创建映像配置。

    Azure PowerShell复制试用
    $imageConfig = New-AzureRmImageConfig -Location $location
    $imageConfig = Set-AzureRmImageOsDisk -Image $imageConfig -OsState Generalized -OsType Windows -ManagedDiskId $diskID
  5. 创建映像。

    PowerShell复制
    New-AzureRmImage -ImageName $imageName -ResourceGroupName $rgName -Image $imageConfig

使用 PowerShell 从快照创建映像

可以从通用 VM 的快照创建托管映像。

  1. 创建一些变量。

    PowerShell复制
    $rgName = "myResourceGroup"
    $location = "ChinaEast"
    $snapshotName = "mySnapshot"
    $imageName = "myImage"
  2. 获取快照。

    PowerShell复制
    $snapshot = Get-AzureRmSnapshot -ResourceGroupName $rgName -SnapshotName $snapshotName
  3. 创建映像配置。

    PowerShell复制
    $imageConfig = New-AzureRmImageConfig -Location $location
    $imageConfig = Set-AzureRmImageOsDisk -Image $imageConfig -OsState Generalized -OsType Windows -SnapshotId $snapshot.Id
  4. 创建映像。

    PowerShell复制
    New-AzureRmImage -ImageName $imageName -ResourceGroupName $rgName -Image $imageConfig

从存储帐户中的 VHD 创建映像

从存储帐户中的通用 OS VHD 创建托管映像。 需要存储帐户中 VHD 的 URI,其格式为 https://mystorageaccount.blob.core.chinacloudapi.cn/container/vhd_filename.vhd。 在本示例中,使用的 VHD 位于名为 vhdcontainer 的容器中的 mystorageaccount 中,且 VHD 文件名为 osdisk.vhd。

  1. 首先,设置公共参数:

    PowerShell复制
    $vmName = "myVM"
    $rgName = "myResourceGroup"
    $location = "ChinaEast"
    $imageName = "myImage"
    $osVhdUri = "https://mystorageaccount.blob.core.chinacloudapi.cn/vhdcontainer/osdisk.vhd"
  2. 停止\解除分配 VM。

    PowerShell复制
    Stop-AzureRmVM -ResourceGroupName $rgName -Name $vmName -Force
  3. 将 VM 标记为通用。

    PowerShell复制
    Set-AzureRmVm -ResourceGroupName $rgName -Name $vmName -Generalized
  4. 使用通用 OS VHD 创建映像。

    PowerShell复制
    $imageConfig = New-AzureRmImageConfig -Location $location
    $imageConfig = Set-AzureRmImageOsDisk -Image $imageConfig -OsType Windows -OsState Generalized -BlobUri $osVhdUri
    $image = New-AzureRmImage -ImageName $imageName -ResourceGroupName $rgName -Image $imageConfig

后续步骤

在 Azure 中创建通用 VM 的托管映像的更多相关文章

  1. 上传通用化 VHD 并使用它在 Azure 中创建新 VM

    本主题逐步讲解如何使用 PowerShell 将通用化 VM 的 VHD 上传到 Azure.从该 VHD 创建映像,然后从该映像创建新 VM. 可以上传从本地虚拟化工具或其他云导出的 VHD. 对新 ...

  2. 排查在 Azure 中创建、重启 Windows VM 或调整其大小时发生的分配失败

    创建 VM.重新启动已停止(解除分配)的 VM 和重设 VM 大小时,Azure 会为订阅分配计算资源. 执行这些操作时,即使尚未达到 Azure 订阅限制,也可能偶尔收到错误. 本文说明一些常见分配 ...

  3. 排查在 Azure 中创建、重启 Linux VM 或调整其大小时发生的分配故障

    创建 VM.重启已停止(解除分配)的 VM 和重设 VM 大小时,Azure 会为订阅分配计算资源. 执行这些操作时,即使尚未达到 Azure 订阅限制,也可能偶尔收到错误. 本文说明一些常见分配故障 ...

  4. 在 Azure 中的 Linux VM 上创建 MongoDB、Express、AngularJS 和 Node.js (MEAN) 堆栈

    本教程介绍如何在 Azure 中的 Linux VM 上实现 MongoDB.Express.AngularJS 和 Node.js (MEAN) 堆栈. 通过创建的 MEAN 堆栈,可以在数据库中添 ...

  5. 排查在 Azure 中新建 Windows VM 时遇到的部署问题

    尝试创建新的 Azure 虚拟机 (VM) 时,遇到的常见错误是预配失败或分配失败. 当由于准备步骤不当,或者在从门户捕获映像期间选择了错误的设置而导致 OS 映像无法加载时,将发生预配失败. 当群集 ...

  6. 详细故障排除步骤:针对 Azure 中到 Windows VM 的远程桌面连接问题

    本文提供详细的故障排除步骤,用于为基于 Windows 的 Azure 虚拟机诊断和修复复杂的远程桌面错误. Important 若要消除更常见的远程桌面错误,请务必先阅读远程桌面的基本故障排除文章, ...

  7. 排查在 Azure 中创建新 Linux 虚拟机时遇到的 Resource Manager 部署问题

    本文内容 常见问题 收集活动日志 问题:自定义映像:预配错误 问题:自定义/库/应用商店映像:分配失败 后续步骤 尝试创建新的 Azure 虚拟机 (VM) 时,遇到的常见错误是预配失败或分配失败. ...

  8. 如何使用 Jenkins、GitHub 和 Docker 在 Azure 中的 Linux VM 上创建开发基础结构

    若要将应用程序开发的生成和测试阶段自动化,可以使用持续集成和部署 (CI/CD) 管道. 本教程介绍如何在 Azure VM 上创建 CI/CD 管道,包括如何: 创建 Jenkins VM 安装并配 ...

  9. 如何使用 Packer 在 Azure 中创建 Windows 虚拟机映像

    Azure 中的每个虚拟机 (VM) 都是基于定义 Windows 分发和操作系统版本的映像创建的. 映像可以包括预安装的应用程序和配置. Azure 应用商店为最常见的操作系统和应用程序环境提供了许 ...

随机推荐

  1. “声讨”高云的《jQuery技术内幕》

    1. 前言: 其实本文有点太标题党了,哈哈,见谅.说“声讨”,就是说说我作为一个<jQuery技术内幕>一个忠实读者,读本书的一些想法和建议. 2014年2月20日,我收到了<jQu ...

  2. Executor简介

        Executor是一个接口,这个接口负责执行提交给它的任务(Runnable对象).这个接口能够使“任务提交”与“任务执行”解耦.即某人只要把任务提交给Executor就好了,至于它怎么给任务 ...

  3. Css相关用法个人总结

    Css相关用法个人总结

  4. vs code 插件收集

    名称 简述 Auto Close Tag 自动闭合HTML标签 Auto Import Typescript自动import提示 Auto Rename Tag 修改HTML标签时,自动修改匹配的标签 ...

  5. 月之数(hdu2502)数学题

    月之数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  6. Safe Or Unsafe(hdu2527)哈弗曼VS优先队列

    Safe Or Unsafe Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  7. LINQ to Objects系列(1)相关技术准备

    LINQ to Objects是LINQ的一部分,是查询对象集合的一种语法.首先看一下LINQ的体系结构,这样对LINQ有一个大致的了解.如图. 第一篇文章主要是回顾一下学习LINQ to Objec ...

  8. 从返回的json格式的data数据内随机取得n个

    var arr=[ { "ceo":"张无忌", "conmpany":"阿里妈妈有限公司", "addres ...

  9. SpringBoot启动加载类ApplicationRunner

    SpringBoot启动加载类ApplicationRunner 有时希望项目在启动的时候加载一些系统参数,就要用到ApplicationRunner ApplicationRunner是一个接口,我 ...

  10. 新建hadoop用户以及用户组,给予sudo权限

    1.首先新建用户,adduser命令 sudo adduser hadoop passwd hadoop 输入密码之后,一路 y 确定. 2.添加用户组 在创建hadoop用户的同时也创建了hadoo ...