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

创建可重复利用的开发箱自定义

在本文中,你将学习如何使用设置任务目录和配置文件来安装软件、配置设置等,从而自定义开发箱。 这些任务将在创建过程的最后阶段应用于新的开发箱。 Microsoft Dev Box 自定义是自定义开发箱的配置即代码方法。 无需创建自定义虚拟机 (VM) 映像即可添加其他设置和软件。

通过使用自定义项,可以自动执行常见的设置步骤、节省时间并减少配置错误的可能性。 一些示例设置任务包括:

  • 使用 WinGet 或 Chocolatey 包管理器安装软件。
  • 设置 OS 设置,例如启用 Windows 功能。
  • 配置应用程序,例如安装 Visual Studio 扩展。

你可以分阶段实现自定义,从简单但功能性配置到自动化过程进行构建。 这些阶段包括:

  1. 使用示例配置文件创建自定义开发箱
  2. 编写配置文件
  3. 从代码存储库共享配置文件
  4. 在目录中定义新任务

重要

Microsoft Dev Box 中的自定义功能目前为预览版。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

团队特定的自定义方案

无论你在创建的最后阶段需要配置设置、安装软件、添加扩展或设置通用 OS 设置(例如在开发箱中启用 Windows 功能),自定义功能都很有用。 开发团队主管可以使用自定义功能来预配置其特定开发团队所需的软件。 开发人员团队主管可以创作仅应用与其团队相关的设置任务的配置文件。 此方法允许开发人员创建最适合其工作的开发箱,而无需要求 IT 人员进行更改或等待工程团队创建自定义 VM 映像。

什么是任务?

任务执行特定操作,例如安装软件。 每个任务都包含一个或多个 PowerShell 脚本,以及一个 task.yaml 文件,该文件提供参数并定义脚本的运行方式。 还可以在 task.yaml 文件中添加 PowerShell 命令。 可以将特选设置任务的集合存储在附加到开发人员中心的目录中,每个任务都位于单独的文件夹中。 开发箱支持将 GitHub 存储库或 Azure DevOps 存储库用作目录,并以递归方式扫描目录的指定文件夹以查找任务定义。

Microsoft 提供了一个快速入门目录,可帮助你开始使用自定义功能。 它包括一组默认的任务,用于定义常见设置任务:

  • 使用 WinGet 或 Chocolatey 包管理器安装软件
  • 使用 git-clone 克隆存储库
  • 配置应用程序,例如安装 Visual Studio 扩展
  • 运行 PowerShell 脚本

以下示例显示了一个目录,其中定义了 choco、git-clone、install-vs-extension 和 PowerShell 任务。 请注意,每个文件夹都包含一个 task.yaml 文件和至少一个 PowerShell 脚本。 Task.yaml 文件会缓存脚本以及从配置文件引用它们所需的输入参数。

Screenshot showing a catalog with choco, git-clone, install-vs-extension, and PowerShell tasks defined, with a tasks.yaml for each task.

什么是配置文件?

开发箱自定义功能使用 yaml 格式化文件来指定一个任务列表,以在创建新开发箱时从目录中应用该列表。 这些配置文件包含一个或多个“任务”,用于标识目录任务并提供要安装的软件的名称等参数。 然后,开发人员可以使用相应配置文件创建新的开发箱。 以下示例使用 winget 任务来安装 Visual Studio Code,并使用 git clone 任务克隆存储库。

# From https://github.com/microsoft/devcenter-examples
$schema: 1.0
tasks:
  - name: winget
    parameters:
      package: Microsoft.VisualStudioCode
      runAsUser: true
  - name: git-clone
    description: Clone this repository into C:\Workspaces
    parameters:
      repositoryUrl: https://github.com/OrchardCMS/OrchardCore.git
      directory: C:\Workspaces

为自定义功能配置 Microsoft Dev Box 所需的权限

若要执行创建开发箱并应用自定义功能所需的操作,需要拥有特定权限。 下表描述了配置自定义所需的操作和权限或所需的角色。

操作 权限/角色
将目录附加到开发人员中心 具有开发人员中心参与者权限的平台工程师。
在开发箱创建过程中,使用开发人员门户上传和应用 yaml 文件 开发箱用户
创建配置文件 任何人都可以创建配置文件。
将任务添加到目录 添加到托管目录的存储库的权限。

先决条件

若要完成本文中的步骤,必须拥有配置了开发箱定义的开发人员中心、开发箱池和开发箱项目

使用示例配置文件创建自定义开发箱

使用默认快速入门目录和示例配置文件开始使用自定义功能。

附加快速入门目录

将包含自定义任务的目录附加到开发人员中心意味着你可以在该中心创建一个开发箱,并引用该目录中的自定义任务。 Microsoft 在 GitHub 上提供了一个示例存储库,其中包含一组标准的默认任务,可帮助你入门,称为“快速入门目录”。

若要将快速入门目录附加到开发人员中心,请执行以下操作:

  1. 登录到 Microsoft Dev Box 开发人员门户

  2. 在左侧菜单中的“环境配置”下选择“目录”,然后选择“添加”。

  3. 在“添加目录”中,选择“开发箱自定义任务”作为快速入门目录。 然后选择“添加”。

  4. 在开发人员中心选择“目录”,并验证目录是否显示。

    Screenshot of the Azure portal showing the Add catalog pane with Microsoft's quick start catalog and Dev box customization tasks highlighted.

    如果连接成功,则“状态”将显示为“同步成功”。

创建自定义开发箱

现在,你有一个目录来定义开发人员可以使用的任务,你可以从配置文件引用这些任务并创建自定义开发箱。

  1. 从示例存储库下载示例 yaml 配置。 此示例配置会安装 Visual Studio Code,并将 OrchardCore .NET Web 应用存储库克隆到开发箱。

  2. 登录到 Microsoft Dev Box 开发人员门户

  3. 选择“新建”>“开发箱”。

  4. 在“添加开发箱”中,输入以下值:

    设置
    名称 输入开发箱的名称。 开发箱名称在项目中必须是唯一的。
    Project 从下拉列表中选择一个位置。
    开发箱池 从下拉列表中选择一个池,该列表包括该项目的所有开发箱池。 选择附近的开发箱池,以获得最低延迟。
    上传的自定义文件 选择“上传自定义文件”并上传在步骤 1 中下载的配置文件。

    Screenshot showing the dev box customization options in the developer portal with Uploaded customization files highlighted.

  5. 选择创建

创建过程完成后,新的开发箱已安装 nodejs 和 Visual Studio Code。

有关更多示例,请参阅 GitHub 上的开发人员中心示例存储库

编写配置文件

你可以通过创建自己的配置文件来定义要应用于开发箱的新任务。 你可以在 Visual Studio Code 中测试配置文件并进行任何需要的更改,而无需为每个测试创建单独的开发箱。

在创建和测试自己的配置文件之前,必须有一个目录,其中包含附加到开发人员中心的任务。 你可以使用 Visual Studio Code 扩展查找附加目录中的任务。

  1. 创建开发箱(或使用现有的开发箱)进行测试。

  2. 在测试开发箱中,安装 Visual Studio Code,然后安装 Dev Box v1.2.2 VS Code 扩展

  3. 从示例存储库下载示例 yaml 配置文件,并在 Visual Studio Code 中将其打开。

  4. 使用命令面板发现目录中可用的任务。 从“视图”>“命令面板”中,选择“开发箱:列出此开发箱的可用任务”。

    Screenshot of Visual Studio Code showing the command palette with Dev Box List available tasks for this dev box highlighted.

  5. 使用 f5/命令面板在 Visual Studio Code 中测试配置。 从“视图”>“命令面板”中,选择“开发箱:应用自定义任务”。

    Screenshot of Visual Studio Code showing the command palette with Dev Box Apply customizations tasks highlighted.

  6. 配置文件会立即运行,将指定的任务应用到测试开发箱。 检查更改并检查 Visual Studio Code 终端,看看任务执行期间是否生成了任何错误或警告。

  7. 成功运行配置文件后,请与开发人员共享,以便在创建新开发箱时上传该文件。

注意

创建和上传文件的能力不是安全风险;上传的文件只能应用附加到开发人员中心的目录中定义的设置。 如果未在该目录中定义任务,开发人员将收到一个错误,指出任务未定义。

共享代码存储库中的配置文件

将配置文件命名为 workload.yaml 并将其上传到开发人员可访问的存储库(通常是其编码存储库),使配置文件可无缝供开发人员使用。 创建开发箱时,可以指定存储库 URL,并将配置文件与存储库的其余部分一起克隆。 开发箱会在存储库中搜索名为 workload.yaml 的文件,如果找到,则执行列出的任务。 此配置提供了在开发箱中无缝执行自定义选项的方法。

  1. 创建名为 workload.yaml 的配置文件。

  2. 使用代码将配置文件添加到专用 Azure DevOps 存储库的根目录并提交。

  3. 登录到 Microsoft Dev Box 开发人员门户

  4. 选择“新建”>“开发箱”。

  5. 在“添加开发箱”中,输入以下值:

    设置
    名称 输入开发箱的名称。 开发箱名称在项目中必须是唯一的。
    Project 从下拉列表中选择一个位置。
    开发箱池 从下拉列表中选择一个池,该列表包括该项目的所有开发箱池。 选择附近的开发箱池,以获得最低延迟。
    存储库克隆 URL 输入包含配置文件和代码的存储库的 URL。

    Screenshot showing the dev box customization options in the developer portal with Repository clone URL highlighted.

  6. 选择创建

新的开发箱已克隆存储库,并应用了配置文件中的所有说明。

在目录中定义新任务

在目录中创建新任务可以创建针对开发团队定制的自定义项,并围绕可能的配置添加防护措施。

  1. 创建存储库来存储任务。

    (可选)你可以在自己的存储库中创建快速入门目录副本,将其用作起点。

  2. 通过修改现有的 PowerShell 脚本或创建新脚本,在存储库中创建任务。

    若要开始创建任务,可以使用 GitHub 上的开发人员中心示例存储库PowerShell 文档中提供的示例。

  3. 将存储库作为目录附加到开发人员中心

  4. 按照编写配置文件中的步骤为这些任务创建配置文件。