次の方法で共有


開発ボックス用のカスタマイズ ファイルを記述する

この記事では、Visual Studio Code (VS Code) と Dev Home を使用して、開発ボックス用のカスタマイズ ファイルを作成し、テストする方法について説明します。

Microsoft Dev Box でカスタマイズ ファイルを使用方法は、2 つあります。 チームのカスタマイズ は、開発者がプールで構成するときに自動的に適用されます。 個々のカスタマイズ は、ユーザーが開発ボックスを作成するときに適用されます。

この記事では、カスタマイズ ファイルに新しいタスクを定義し、それを開発ボックスに適用し、VS Code でカスタマイズを直接テストする方法について説明します。

重要

Dev Box のチーム カスタマイズ機能は現在プレビュー段階です。 プレビュー状態の詳細については、「Microsoft Azure プレビューの追加の使用条件」を参照してください。 このドキュメントでは、ベータ版、プレビュー版、またはその他のまだ一般提供されていない Azure 機能に適用される法律条項を規定しています。

前提条件

この記事の手順を実行するには、以下が必要です。

カスタマイズを構成するために必要なアクセス許可

開発ボックスにカスタマイズを作成して適用するために必要なアクションを実行するには、次のアクセス許可が必要です:

アクション アクセス許可/ロール
デベロッパー センターでプロジェクト レベルのカタログを有効にする。 サブスクリプションに対する書き込みアクセス権限を持つプラットフォーム エンジニア。
プロジェクトのカタログ同期設定を有効にする。 サブスクリプションに対する書き込みアクセス権限を持つプラットフォーム エンジニア。
プロジェクトにカタログをアタッチする。 プロジェクトに対するプロジェクト管理者または共同作成者のアクセス許可。
カスタマイズ ファイルを作成する。 指定なし。 カスタマイズ ファイルは誰でも作成できます。
開発ボックスの作成時に、開発者ポータルを使って、YAML ファイルのアップロードと適用を行う。 Dev Box ユーザー。
タスクをカタログに追加する。 カタログをホストするリポジトリに追加するアクセス許可。

カスタマイズ ファイルとは

Dev Box のカスタマイズでは、YAML 形式のファイルを使って、開発者が新しい開発ボックスを作成した時に適用するタスクの一覧を指定します。 これらのタスクは、パッケージのインストールのようなシンプルなものから、コード ベースを設定するために一連の複雑なスクリプトを実行するような高度なものまであります。 タスクは、カタログを特定し、パラメーター (インストールするソフトウェアの名前など) を指定するものです。 その後、開発者はカスタマイズ ファイルを使って開発ボックスを作成できます。

次の例では、winget タスクを使用して VS 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

カスタマイズ ファイルの使用方法には、単一の開発ボックスに適用する個別カスタマイズと、チーム全体に適用するチーム カスタマイズの 2 種類があります。

個別カスタマイズ ファイル

  • 開発者が開発ボックスを作成するときに適用されるタスクを含みます。
  • 開発ボックスの作成時に開発者によってアップロードされます。

チーム カスタマイズ ファイル

  • 開発者が開発ボックスを作成するときに適用されるタスクを含みます。
  • チームやプロジェクト全体で共有されます。
  • 基本イメージを指定するフィールドを含めます。
  • imagedefinition.yaml という名前が付けられます。
  • カタログをホストしているリポジトリにアップロードされます。
  • 開発者が構成済みのプールから開発ボックスを作成すると、自動的に使用されます。

重要

イメージ定義で基本イメージとして使用できるのは、Dev Box マーケットプレースの画像のみです。 デベロッパー センターがアクセスできるイメージの一覧を取得するには、次の Azure CLI コマンドを使用します:

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

カスタマイズ ファイルを作成する

VS Code を使用してカスタマイズ ファイルを作成および管理できます。 VS Code の Microsoft Dev Box 拡張機能を使用して、アタッチされたカタログ内のタスクを検出し、カスタマイズ ファイルをテストできます。

  1. テスト用に開発ボックスを作成します (または、既存の開発ボックスを使います)。

  2. テスト用の開発ボックスに VS Code をインストールし、Dev Box 拡張機能をインストールします。

  3. サンプル リポジトリから YAML カスタマイズ ファイルの例をダウンロードし、VS Code で開きます。

  4. コマンド パレットを使って、カタログで利用できるタスクを検出します。 [表示]>[コマンド パレット]>[Dev Box: この開発ボックスで利用できるタスクの一覧を表示する] を選択します。

    Visual Studio Code の Dev Box コマンド パレットのスクリーンショット。使用可能なタスクを一覧表示するためのコマンドが示されています。

  5. コマンド パレットを使用して、VS Code でカスタマイズをテストします。 [表示]>[コマンド パレット]>[Dev Box: カスタマイズ タスクを適用する] を選択します。

    カスタマイズ タスクを適用するためのコマンドを表示した、Visual Studio Code の Dev Box コマンド パレットのスクリーンショット。

  6. カスタマイズ ファイルがすぐに実行されて、指定したタスクがテスト開発ボックスに適用されます。 変更を検査し、VS Code ターミナルでタスクの実行中に生成されたエラーまたは警告を調べます。

  7. カスタマイズ ファイルが正常に実行されたら、それをカタログにアップロードします。

カスタマイズ ファイルを使用してプライベート リポジトリをクローンする

Azure Key Vault のシークレットは、YAML のカスタマイズの中で使用してプライベート リポジトリをクローンすることや、アクセス トークンが必要なカスタム タスクを作成した場合に使用することができます。 チーム カスタマイズ ファイルでは、キー コンテナーに格納されている個人用アクセス トークン (PAT) を使用して、プライベート リポジトリにアクセスできます。

チーム カスタマイズ ファイルでキー コンテナー シークレットを使用する

プライベート リポジトリをクローンするには、PAT をキー コンテナー シークレットとして格納し、カスタマイズで git-clone タスクを呼び出すときに使用します。

キー コンテナー シークレットを YAML のカスタマイズの中で使用するために構成するには、以下のことが必要です:

  1. デベロッパー センター プロジェクトのマネージド ID にキー コンテナーの Key Vault 閲覧者ロールと Key Vault シークレット ユーザー ロールがあることを確認します。
  2. 使用するキー コンテナー シークレットの Key Vault シークレット ユーザー ロールを、開発ボックスのカスタマイズ時にシークレットの使用権を必要とする個々のユーザーまたはユーザー グループに付与します。 ロールを付与されるユーザーまたはグループには、デベロッパー センターのマネージド ID、付与作業者自身のユーザー アカウント、および、開発ボックスのカスタマイズ時にシークレットを必要とするユーザーまたはグループを含める必要があります。

詳細については、以下を参照してください:

YAML のカスタマイズの中でシークレットを参照するには、以下のようにします (例として git-clone タスクの場合を示します):

$schema: "1.0"
tasks:
   name: git-clone
   description: Clone this repository into C:\Workspaces
      parameters:
         repositoryUrl: https://myazdo.visualstudio.com/MyProject/_git/myrepo
         directory: C:\Workspaces
         pat: '{{KEY_VAULT_SECRET_URI}}'

個別カスタマイズ ファイルでキー コンテナー シークレットを使用する

個別カスタマイズ ファイルからプライベート Azure Repos リポジトリをクローンする場合、Azure Key Vault のシークレットを構成する必要はありません。 代わりのパラメーターとして {{ado}} または {{ado://your-ado-organization-name}} を使用できます。 このパラメーターは、開発ボックスを作成するときに、ユーザーに代わってアクセス トークンをフェッチします。 アクセス トークンには、リポジトリに対する読み取り専用アクセス許可があります。

クイックスタート カタログ内の git-clone タスクでは、アクセス トークンを使用してリポジトリのクローンが行われます。 次に例を示します。

tasks:
   name: git-clone
   description: Clone this repository into C:\Workspaces
      parameters:
         repositoryUrl: https://myazdo.visualstudio.com/MyProject/_git/myrepo
         directory: C:\Workspaces
         pat: '{{ado://YOUR_ADO_ORG}}'

デベロッパー センターからキー コンテナーにアクセスできる必要があります。 デベロッパー センターではサービス タグがサポートされていないため、キー コンテナーが非公開の場合は、信頼済みの Microsoft サービスがファイアウォールをバイパスすることを許可する必要があります。

Azure Key Vault 設定で、信頼された Microsoft サービスがファイアウォールをバイパスすることを許可するためのオプションを示すスクリーンショット。

信頼された Microsoft サービスが Key Vault ファイアウォールをバイパスすることを許可する方法については、「Azure Key Vault のネットワーク設定を構成する」を参照してください。

既存の WinGet 構成ファイルを使用して開発ボックスをカスタマイズする

WinGet 構成は、Windows 環境をすぐにコード化できる状態にするために必要な一意のソフトウェアと構成設定のセットの定義に、コードとしての構成アプローチを使用します。 これらの構成ファイルは開発ボックスをセットアップするためにも使用できます。これには、Microsoft 提供のクイック スタート カタログに含まれている WinGet タスクを使用します。

次の例は、既存の WinGet Desired State Configuration (DSC) ファイルを呼び出す開発ボックスのカスタマイズ ファイルを示しています:

tasks:
    - name: winget
      parameters:
          configure: "projectConfiguration.dsc.yaml"

詳細については、「WinGet の構成」を参照してください。

コード リポジトリからカスタマイズ ファイルを共有する

カスタマイズ ファイルに imagedefinition.yaml という名前を付け、カタログをホストしているリポジトリにアップロードして、開発ボックス プールで利用できるようにします。 開発ボックス プールの作成時に、カタログからカスタマイズ ファイルを選択して、プールの開発ボックスに適用できます。