このリファレンス記事では、Microsoft Dev Box のカスタマイズに使用される imagedefinition.yaml ファイルと 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 Compute Gallery インスタンスのカスタム イメージを指定することもできます。
image: galleryname/imagename@version
Azure コンピューティング ギャラリー インスタンスをデベロッパー センターにアタッチする方法については、「 Microsoft Dev Box 用に Azure Compute Gallery を構成する」を参照してください。
デベロッパー センターがアクセスできるイメージの一覧を取得するには、次の az cli コマンドを使用します。
az devcenter admin image list --dev-center-name CustomizationsImagingHQ --resource-group TeamCustomizationsImagingRG --query "[].name"
デベロッパー センターの az cli 拡張機能が必要です。
az extension add --name devcenter
ビルドプロパティ
このオブジェクト コレクションは、イメージのビルド プロセスをカスタマイズするために使用できるビルド プロパティで構成されます。
networkConnection
随意: イメージの作成時に使用するネットワーク接続を指定します。 このネットワーク接続により、カスタマイズ タスクは、指定されたネットワークからアクセスできるストレージ アカウントやリポジトリなどのリソースにアクセスできます。 イメージの作成に使用するには、ネットワーク接続をデベロッパー センターに接続する必要があります。
例:
buildProperties:
networkConnection: "my-westus3"
用事
必須: このオブジェクト コレクションは、開発ボックスをプロビジョニングするときに実行する 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 - 構成 YAML ファイルが格納されているパブリックにアクセス可能な URL。 ファイルは、指定したパス
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(必須): このパラメーターの入力データ型。stringまたはintを指定できます。 -
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"