可以从在存储帐户中存储为托管磁盘或非托管磁盘的通用 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. JavaScript -- Anchor

    -----052-Anchor.html----- <!DOCTYPE html> <html> <head> <meta http-equiv=" ...

  2. The case for learned index structures

    17年的旧文,最近因为SageDB论文而重读. 文章主要思路是通过学习key的顺序.结构等来预测record在位置.存在与否等.效果方面,据称部分场景下,相对b-tree可以优化70%的内存占用. 最 ...

  3. 单例模式——java设计模式

    单例模式 目录: 一.何为单例 二.使用Java EE实现单例模式 三.使用场景 一.何为单例 确保一个类只有一个实例,并且提供了实例的一个全局访问点 1.1 单例模式类图               ...

  4. Spring总结 1.装配bean

    本随笔内容要点如下: 依赖注入 Spring装配bean的方式 条件化装配 一.依赖注入 我理解的依赖注入是这样的:所谓的依赖,就是对象所依赖的其他对象.Spring提供了一个bean容器,它负责创建 ...

  5. 软件架构设计学习总结(19):详解分布式系统中的session同步问题

    几周前,有个盆友问老王,说现在有多台服务器,怎么样来解决这些服务器间的session同步问题?老王一下就来精神了,因为在n年以前,老王还在学校和几个同学一起所谓创业的时候,也遇到了类似的问题.当时查了 ...

  6. windows环境下搭建Java开发环境(二):Tomcat安装和配置

    一.资源下载 官网:http://tomcat.apache.org/ 本人安装的是Tomcat8.5,安装包百度云资源:链接:https://pan.baidu.com/s/17SDFsoS0yAP ...

  7. HTTP 无法注册URL 进程不具有命名空间的访问权限

    写WCF时在 host.Open(); 报错:HTTP 无法注册 URL http://+:9999/CalculatorService/.进程不具有此命名空间的访问权限(有关详细信息,请参见 htt ...

  8. git将本地项目发布到远端

    如果本地有个项目myapp之前没在git上,想上传到git仓库保存,操作如下 1. 在gitee或者github上创建一个新仓库 仓库 2. 在控制台进入本地已有的项目文件夹下 cd myapp 3. ...

  9. SQL Server系列文章目录

    SQL Server系列文章目录SQL Server系列文章目录SQL Server系列文章目录SQL Server系列文章目录

  10. 在Linux上实现SVN用户密码自助修改

    1.首先本文是在一篇百度经验的基础上修改而成,将网址记录上,以示尊重. https://jingyan.baidu.com/article/48b37f8dd4bbb31a646488c2.html ...