你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

保存自定义映像并分发到多个实验室

本文介绍保存已创建的虚拟机 (VM) 中自定义映像的步骤。 此外,还介绍如何将这些自定义映像分发到组织中的其他开发测试实验室。

先决条件

应已准备好以下各项:

  • Azure 开发测试实验室中用于映像中心的实验室。
  • 用于实现映像中心自动化的 Azure DevOps 项目。
  • 包含脚本和配置的源代码位置(在本例中,位置是上一步提到的同一 DevOps 项目)。
  • 用于协调 Azure PowerShell 任务的生成定义。

如果需要,请按照从 Azure DevOps 运行映像中心中的步骤创建或设置这些项目。

将 VM 保存为通用 VHD

将现有 VM 保存为通用 VHD。 下面是一个使用 PowerShell 脚本将现有 VM 保存为通用 VHD 的示例。 若要使用它,首先要向生成定义添加另外一个 Azure PowerShell 任务,如下图所示:

添加 Azure PowerShell 步骤

在列表中显示新任务后,选择该项以便填写所有详细信息,如下图所示:

PowerShell 设置

通用与专用自定义映像

Azure 门户中,根据虚拟机创建自定义映像时,可以选择创建通用还是专用自定义映像。

  • 专用自定义映像:未在计算机上运行 Sysprep/取消设置。 这表示,映像是现有虚拟机上操作系统磁盘的精确副本(快照)。 新计算机具有与此自定义映像相同的文件、应用程序、用户帐户和计算机名称。
  • 通用自定义映像:已在计算机上运行 Sysprep/取消设置。 此过程会删除用户帐户、删除计算机名称,并将用户的注册表配置单元删除。 目标是通用化映像,以便在创建另一台虚拟机时对其进行自定义。 通过运行 sysprep 对虚拟机通用化时,该进程会破坏当前的虚拟机。 当前虚拟机不能再正常工作。

用于在映像工厂中对齐自定义映像的脚本会保存之前步骤中创建的任何虚拟机的 VHD。 此脚本基于 Azure 中资源上的标记来标识 VHD。

更新分发映像的配置

在此过程中,下一步要将自定义映像从映像中心实验室推送到需要它们的任何其他实验室。 此过程的核心部分在于 labs.json 配置文件。 在映像中心包含的“配置”文件夹中可找到该文件。

配置文件 labs.json 中列出了两项关键内容:

  • 使用订阅 ID 和实验室名称唯一地标识特定目标实验室。
  • 应作为配置根的相对路径推送到实验室的特定映像集。 还可以指定整个文件夹(以获取该文件夹中的所有映像)。

以下是一个列出了两个实验室的 labs.json 文件示例。 在本例中,需要将映像分发到两个不同的实验室。

{
   "Labs": [
      {
         "SubscriptionId": "<subscription ID that contains the lab>",
         "LabName": "<Name of the DevTest Lab>",
         "ImagePaths": [
               "Win2012R2",
               "Win2016/Datacenter.json"
         ]
      },
      {
         "SubscriptionId": "<subscription ID that contains the lab>",
         "LabName": "<Name of the DevTest Lab>",
         "ImagePaths": [
               "Win2016/Datacenter.json"
         ]
      }
   ]
}

创建生成任务

按照本文前面所述的相同步骤,向生成定义中添加一个 Azure Powershell 生成任务。 填写详细信息,如下图所示:

用于分发图像的生成任务的屏幕截图。

参数包括:-ConfigurationLocation $(System.DefaultWorkingDirectory)$(ConfigurationLocation) -SubscriptionId $(SubscriptionId) -DevTestLabName $(DevTestLabName) -maxConcurrentJobs 20

该任务将获取映像中心存在的任何自定义映像,并将它们推送到 Labs.json 中定义的任何实验室。

让生成排队

分发生成任务完成后,排队一个新的生成以确保一切正常。 成功完成生成后,进入 Labs.json 配置文件的目标实验室中会显示新的自定义映像。

后续步骤

在本系列的下一篇文章中,将使用保留策略和清理步骤更新映像中心:设置保留策略和运行清理脚本