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

自定义架构参考

本参考文章提供有关 imagedefinition.yaml 用于自定义Microsoft Dev Box 的文件的详细信息 task.yaml 。 开发人员可以使用这些 YAML 文件来定义用于预配和配置开发框的任务。 这些文件有助于确保跨开发环境的一致性和效率。 本文介绍两种文件类型的架构、必需属性和示例,以及 PowerShell 和 WinGet 等内置任务。

Imagedefinition.yaml 文件

可以使用 Dev Box YAML 文件定义在创建 Dev Box 期间应运行的自定义任务。 devbox.yaml文件可能与开发团队使用的主源位于同一存储库中,或者该文件可能位于配置的集中式存储库中。

示例映像定义 YAML:

$schema: 1.0
name: project-sample-1
image: MicrosoftWindowsDesktop_windows-ent-cpc_win11-21h2-ent-cpc-m365
tasks:
- name: "powershell"
  inputs:
    command:

姓名

必填: 映像定义的此友好名称与此 devbox.yaml 文件相关联。 此设置控制创建和更新池时可用的映像定义的名称。

name: myVSDevBox

图像

必填: 要用作映像定义基础映像的映像可以是市场映像:

image: MicrosoftWindowsDesktop_windows-ent-cpc_win11-21h2-ent-cpc-m365

或者,它可以是附加的 Azure 计算库实例的自定义映像:

image: galleryname/imagename@version

若要了解如何将 Azure 计算库实例附加到开发人员中心,请参阅 为 Microsoft Dev Box 配置 Azure 计算库

若要获取开发人员中心有权访问的映像列表,请使用 az cli 以下命令:

az devcenter admin image list --dev-center-name CustomizationsImagingHQ --resource-group TeamCustomizationsImagingRG --query "[].name"

需要开发人员中心 az cli 扩展:

az extension add --name devcenter

任务

必填: 此对象集合由预配开发框时要运行的 Dev Box 自定义任务组成。 提供给任务的特定输入因任务而异。

示例:

tasks:
- name: winget
  parameters:
    package: GitHub.GitHubDesktop

所有任务都支持可选 timeout 属性。

示例:

tasks:
- name: powershell
  timeout: 1800 # in seconds
  parameters:
    command: <command>

内置任务

PowerShell 和 WinGet 可用作内置任务。 无需在开发人员中心级别附加定义这些任务的实现的目录,即可直接调用它们。

WinGet 内置任务

此内置任务将 WinGet 配置应用于开发框。

参数:

  • configurationFile:

    • 类型:string
    • WinGet 配置 YAML 文件的路径。 该文件必须位于本地计算机中。
    • 必需:false
  • downloadUrl:

    • 类型:string
    • 一个可公开访问的 URL,其中存储了配置 YAML 文件。 文件将下载到指定路径 configurationFile
    • 必需:false
  • inlineConfigurationBase64:

    • 类型:string
    • WinGet 配置 YAML 文件的 Base64 编码字符串。 该文件被解码为指定或临时文件(如果未指定)的路径 configurationFile
    • 必需:false
  • package:

    • 类型:string
    • 要安装的包的名称。
    • 如果在其他参数下提供了配置 YAML 文件,则不需要包名称。
    • 必需:false
  • version

    • 类型:string
    • 要安装的包的版本。
    • 如果配置 YAML 文件在其他参数下提供,则无需包版本。
    • 必需:false

PowerShell 内置任务

此内置任务运行 PowerShell 命令。

参数:

  • command:
    • 类型:string
    • 要执行的命令
    • 必需:true

task.yaml 文件

自定义任务是可重用的安装代码或环境配置单元。 开发人员使用 PowerShell 脚本来编写脚本,并使用 task.yaml 元数据文件来描述它们。 开发人员使用这些任务通过引用 devbox.yaml 文件来自定义开发框。

定义自定义任务时,可以标识可供开发人员用于 devbox.yaml 文件的任务。 可以限制高特权作,例如运行任何 PowerShell 命令的功能。

任务定义的以下示例在特定工作目录中运行 PowerShell 命令:

name: powershell
description: Execute a powershell command
author: Microsoft Corporation
command: ".\runcommand.ps1 -command {{command}} -workingDirectory {{workingDirectory}}"
inputs:
  command:
    type: string
    defaultValue: ""
    required: true
    description: The command to execute
  workingDirectory:
    type: string
    defaultValue: ""
    required: false
    description: The working directory to execute the command in

特性

姓名

必填:此唯一标识符用于引用任务。devbox.yaml 该名称在任务所在的目录上下文中必须是唯一的。

命名必须与现有的 Azure 资源约束匹配。 名称必须介于 3 到 63 个字符之间。 它必须以字母数字字符开头。 名称必须仅包含字母数字字符和“-”、“.”或“_”。 保留“/”字符。

name: powershell

描述

自选: 此属性描述任务。

description: This task executes a powershell command

输入

必填: 此属性列出此任务作为文件中的输入 devbox.yaml 的参数,并在运行命令时使用该参数。 每个父项表示参数的名称,并支持以下键:

  • type (必需):此参数的输入数据类型。 可以是 stringint
  • defaultValue (必需):此参数采用的默认值。
  • required (必需):指定此参数是可选的还是必需的键。
  • description (必需):此参数所表示的内容的说明。
inputs:
  command:
    type: string
    defaultValue: ""
    required: true
    description: The command to execute

指令

必填: 此命令用于完成此任务。 提供的命令字符串在本地计算机上的 Windows PowerShell 中运行。

command: ".\runcommand.ps1

在命令中引用变量

若要在命令中引用参数,请在双大括号中指定变量名称, {{parameter_name}}例如。 这些变量的值在命令运行之前内插。

command: ".\runcommand.ps1 -command {{command}} -workingDirectory {{workingDirectory}}"

超时

自选: 此变量指定在任务超时之前等待任务执行完成的最长时间(以分钟为单位)。默认值为 30 分钟。

timeout: 30

作者

自选: 此变量标识任务作者,以帮助进行审核和故障排除。

author: Contoso Corporation

documentationURL

自选: 此变量链接到此任务的文档。

documentationURL: "https://link.to/documentation"

licenseURL

自选: 此变量链接到此任务的许可证。

licenseURL: "https://link.to/license"