Share via


再利用できる開発ボックスのカスタマイズを作成する

Microsoft Dev Box のカスタマイズは、開発ボックスをカスタマイズするためのコードとしての構成アプローチです。 この記事では、タスクのカタログと構成ファイルを使って、ソフトウェアのインストール、拡張機能の追加、リポジトリの複製などを行うように開発ボックスをカスタマイズする方法を説明します。 これらのタスクは、作成プロセスの最後の段階で新しい開発ボックスに適用されます。 カスタム仮想マシン (VM) イメージを作成しなくても、設定とソフトウェアを追加できます。

カスタマイズは、開発チームにとって便利です。 開発者チームリーダーは、カスタマイズを使用して、特定の開発チームに必要なソフトウェアを事前構成し、チームに関連するタスクのみを適用する構成ファイルを作成できます。 この方法を使うと、開発者は、IT 部門に変更を求めたり、エンジニアリング チームがカスタム VM イメージを作成するのを待ったりする必要なしに、自分の作業に最適な開発ボックスを作成できます。

カスタマイズを使うことで、一般的なセットアップ手順を自動化し、時間を節約して、構成エラーの可能性を減らすことができます。 タスクの例をいくつか次に示します。

  • WinGet パッケージ マネージャーでのソフトウェアのインストール。
  • Windows の機能の有効化などの OS の設定。
  • Visual Studio 拡張機能のインストールなどのアプリケーションの構成。

シンプルではあっても実用的な構成から、自動化されたプロセスまで段階的にカスタマイズを採用して構築できます。 段階は次のとおりです。

  1. 構成ファイルの例を使って、カスタマイズされた開発ボックスを作成します
  2. 構成ファイルを記述します
  3. コード リポジトリから構成ファイルを共有します
  4. カタログで新しいタスクを定義します
  5. Azure Key Vault のシークレットを使用する

重要

Microsoft Dev Box のカスタマイズは現在プレビュー段階です。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。

前提条件

構成ファイルの例を使って、カスタマイズされた開発ボックスを作成する

カスタマイズに着手するには、既定のクイック スタート カタログと構成ファイルの例を使います。

クイック スタート カタログをアタッチする

カスタマイズ タスクを含むカタログをデベロッパー センターにアタッチすると、そのデベロッパー センターで開発ボックスを作成し、そのカタログからカスタマイズ タスクを参照できるようになります。 Microsoft からは、作業を始めるのに役立つ既定のタスクの標準的なセットを含むサンプル リポジトリが、GitHub で提供されています。これは、"クイック スタート カタログ" と呼ばれます。

クイック スタート カタログをデベロッパー センターにアタッチするには:

  1. Microsoft Dev Box 開発者ポータルにサインインします。

  2. 左側のメニューの [環境の構成] で、[カタログ] を選択し、[追加] を選択します。

  3. [カタログの追加] で、クイック スタート カタログとして [開発ボックスのカスタマイズ タスク] を選びます。 次に、追加を選択します。

  4. デベロッパー センターで [カタログ] を選び、カタログが表示されることを確認します。

    Azure portal のスクリーンショット。[カタログの追加] ペイン内で、Microsoft のクイック スタート カタログと Dev Box カスタマイズ タスクが強調されています。

    接続が成功した場合、[状態][同期に成功しました] になります。

カスタマイズした開発ボックスを作成する

これで、開発者の使用可能なタスクを定義するカタログが作成されました。 それらのタスクを構成ファイルから参照し、カスタマイズした開発ボックスを作成できます。

  1. サンプル リポジトリから yaml 構成の例をダウンロードします。 この構成例では、Visual Studio Code がインストールされて、OrchardCore .NET Web アプリ リポジトリが開発ボックスにクローンされます。

  2. Microsoft Dev Box 開発者ポータルにサインインします。

  3. [新規]>[Dev Box] を選びます。

  4. [開発ボックスを追加する] で、次の値を入力してから、[続行] を選びます。

    設定
    名前 開発ボックスの名前を入力します。 開発ボックスの名前は、プロジェクト内で一意とする必要があります。
    プロジェクト ドロップダウン リストからプロジェクトを選択します。
    開発ボックス プール そのプロジェクトのすべての開発ボックス プールを含むドロップダウン リストからプールを選択します。 待ち時間を最小にするため、自分の近くの開発ボックス プールを選びます。
    カスタマイズを適用する [Apply customizations] (カスタマイズを適用する) を選びます。

    開発者ポータルに開発ボックスのカスタマイズ オプションを表示したスクリーンショット。アップロードされたカスタマイズ ファイルが強調されています。

  5. [Customize your dev box] (開発ボックスのカスタマイズ) ページで、[Upload a customization file] (カスタマイズ ファイルのアップロード) を選び、次に [Add customizations from file] (ファイルからカスタマイズを追加) を選びます。

    [Upload a customization file] (カスタマイズ ファイルのアップロード) と [Add customizations from file] (ファイルからカスタマイズを追加) が強調表示された [Customize your dev box] (開発ボックスのカスタマイズ) ページのスクリーンショット。

  6. ダウンロードした yaml 構成ファイル例の場所を参照し、[開く] を選びます。

  7. [Upload a customization file] (カスタマイズ ファイルのアップロード) の下に構成ファイルがリストされていることを確認し、[検証] を選びます。

    アップロードされたカスタマイズ ファイルがリストされ、[検証] が強調表示された [Customize your dev box] (開発ボックスのカスタマイズ) ページのスクリーンショット。

  8. Dev Box が構成ファイルを検証したら、[続行] を選びます。

    カスタマイズ タスクの検証の成功メッセージを示すスクリーンショット。[続行] が強調表示されています。

  9. [Dev box creation summary] (開発ボックスの作成の概要) ページに、Dev Box が適用するタスクが表示されます。 [作成] を選択します

    [作成] ボタンが強調表示されている [Dev box creation summary] (開発ボックスの作成の概要) ページを示すスクリーンショット。

作成プロセスが完了すると、新しい開発ボックスに nodejs と Visual Studio Code がインストールされます。

他の例については、GitHub でデベロッパー センターの例のリポジトリを参照してください。

ヒント

開発者ポータルの代わりに、Dev Home を使用して開発ボックスを作成、カスタマイズし、それに接続できます。 Dev Home は、開発ボックスを管理するための 1 つの場所を提供するネイティブ Windows アプリです。 Dev Home の詳細については、Dev Home を使用して再利用可能な開発ボックスのカスタマイズを作成する方法に関する記事を参照してください。

構成ファイルとは

Dev Box のカスタマイズでは、yaml 形式のファイルを使って、新しい開発ボックスの作成時にカタログから適用するタスクの一覧を指定します。 これらの構成ファイルに含まれる 1 つ以上の "tasks" では、カタログ タスクを示し、インストールするソフトウェアの名前などのパラメーターを指定します。 その後、開発者は構成ファイルを使って新しい開発ボックスを作成できます。 次の例では、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

タスクとは

タスクは、ソフトウェアのインストールなどの特定のアクションを実行します。 各タスクは、1 つ以上の PowerShell スクリプトと、パラメーターを提供してスクリプトの実行方法を定義する task.yaml ファイルで構成されます。 task.yaml ファイルに PowerShell コマンドを含めることもできます。 デベロッパー センターにアタッチされたカタログに、キュレーションされたタスクのコレクションを、各タスクを別個のフォルダーにして格納できます。 Dev Box は、カタログとして GitHub リポジトリまたは Azure DevOps リポジトリの使用をサポートし、カタログの指定されたフォルダーを再帰的にスキャンしてタスクの定義を検索します。

Microsoft からは、カスタマイズを始めるのに役立つクイック スタート カタログが提供されています。 これには、一般的なタスクを定義する既定のタスク セットが含まれます。

  • WinGet パッケージ マネージャーでのソフトウェアのインストール。
  • WinGet 構成を使用して、Desired State Configuration (DSC) をデプロイします。
  • git-clone を使ったリポジトリの複製。
  • Visual Studio 拡張機能のインストールなどのアプリケーションの構成。
  • PowerShell スクリプトの実行。

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

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

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

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

WinGet 構成の詳細については、WinGet 構成に関する記事を参照してください。

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

カスタマイズを作成して開発ボックスに適用するために必要なアクションを実行するには、特定のアクセス許可が必要です。 次の表では、カスタマイズを構成するために必要なアクションとアクセス許可またはロールについて説明します。

アクション アクセス許可/ロール
カタログをデベロッパー センターにアタッチする デベロッパー センターに対する共同作成者アクセス許可を持つプラットフォーム エンジニア。
開発ボックスの作成時に、開発者ポータルを使って、yaml ファイルのアップロードと適用を行う Dev Box ユーザー
構成ファイルを作成する 構成ファイルの作成は誰でもできます。
タスクをカタログに追加する カタログをホストしているリポジトリに追加するためのアクセス許可。

構成ファイルの記述

独自の構成ファイルを作成することで、開発ボックスに適用する新しいタスクを定義できます。 Visual Studio Code で構成ファイルをテストして、必要な変更を行うことができ、テストごとに個別の開発ボックスを作成する必要はありません。

独自の構成ファイルを作成してテストする前に、タスクを含むカタログをデベロッパー センターにアタッチする必要があります。 Visual Studio Code 拡張機能を使って、アタッチされたカタログ内のタスクを検出できます。

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

  2. テスト開発ボックスで、Visual Studio Code をインストールしてから、Dev Box v1.2.2 VS Code 拡張機能をインストールします。

  3. サンプル リポジトリから yaml 構成ファイルの例をダウンロードし、Visual Studio Code で開きます。

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

    Visual Studio Code のスクリーンショット。コマンド パレットの [Dev Box: List available tasks for this dev box (この開発ボックスで利用できるタスクの一覧を表示する)] が強調されています。

  5. F5 キーとコマンド パレットを使って、Visual Studio Code で構成をテストします。 [表示]>[コマンド パレット] で、[Dev Box: Apply customizations tasks] (Dev Box: カスタマイズ タスクを適用する) を選びます。

    Visual Studio Code のスクリーンショット。コマンド パレットの [Dev Box: Apply customizations tasks (カスタマイズ タスクを適用する)] が強調されています。

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

  7. 構成ファイルが正常に実行されたら、それを開発者と共有し、新しい開発ボックスが作成されたらアップロードされるようにします。

ヒント

Visual Studio Code の代わりに、Dev Home を使用して、グラフィカル ユーザー インターフェイスで構成ファイルを作成および検証できます。 Dev Home の詳細については、Dev Home を使用して再利用可能な開発ボックスのカスタマイズを作成する方法に関する記事を参照してください。

Note

ファイルを作成してアップロードする機能はセキュリティ上のリスクではありません。アップロードされたファイルには、デベロッパー センターにアタッチされているカタログで定義されている設定のみを適用できます。 タスクがそこで定義されていない場合、開発者はタスクが定義されていないというエラーを受け取ります。

コード リポジトリから構成ファイルを共有する

構成ファイルに workload.yaml という名前を付け、開発者がアクセスできるリポジトリ (通常はコーディング リポジトリ) にアップロードすることで、構成ファイルを開発者がシームレスに使用できるようにします。 開発ボックスを作成するときは、リポジトリの URL を指定すると、構成ファイルがリポジトリの残りの部分と共にクローンされます。 開発ボックスは、リポジトリで workload.yaml という名前のファイルを検索し、見つかったら、そこに一覧表記されているタスクを実行します。 この構成により、開発ボックスでカスタマイズを実行するシームレスな方法が提供されます。

  1. workload.yaml という名前の構成ファイルを作成します。

  2. 構成ファイルを、作成するコードを含んだプライベート Azure Repos リポジトリのルートに追加し、コミットします。

  3. Microsoft Dev Box 開発者ポータルにサインインします。

  4. [新規]>[Dev Box] を選びます。

  5. [開発ボックスを追加する] で、次の値を入力してから、[続行] を選びます。

    設定
    名前 開発ボックスの名前を入力します。 開発ボックスの名前は、プロジェクト内で一意とする必要があります。
    プロジェクト ドロップダウン リストからプロジェクトを選択します。
    開発ボックス プール そのプロジェクトのすべての開発ボックス プールを含むドロップダウン リストからプールを選択します。 待ち時間を最小にするため、自分の近くの開発ボックス プールを選びます。
    カスタマイズを適用する [Apply customizations] (カスタマイズを適用する) を選びます。

    開発者ポータルに開発ボックスのカスタマイズ オプションを表示したスクリーンショット。アップロードされたカスタマイズ ファイルが強調されています。

  6. [Customize your dev box] (開発ボックスのカスタマイズ) ページで [Choose a customization file from a repository] (リポジトリからカスタマイズ ファイルを選択) を選び、[Azure DevOps リポジトリ URL] に、適用する構成ファイルをホストするリポジトリの URL を入力してから、[続行] を選びます。

    [Choose a customization file from a repository] (リポジトリからカスタマイズ ファイルを選択) と [Azure DevOps リポジトリ URL] がある、[Customize your dev box] (開発ボックスのカスタマイズ) ページを示すスクリーンショット。

  7. [Dev box creation summary] (開発ボックスの作成の概要) ページに、Dev Box が適用するタスクが表示されます。 [作成] を選択します

作成プロセスが完了すると、新しい開発ボックスに nodejs と Visual Studio Code がインストールされます。

新しい開発ボックスにリポジトリがクローンされて、構成ファイルのすべての命令が適用されます。

カタログで新しいタスクを定義する

カタログで新しいタスクを作成すると、開発チームに合わせて調整したカスタマイズを作成し、可能な構成を制限するガードレールを追加できます。

  1. タスクを格納するリポジトリを作成します。

    必要に応じて、クイック スタート カタログのコピーを独自のリポジトリに作成し、それを使って始めることができます。

  2. 既存の PowerShell スクリプトを変更するか、新しいスクリプトを作成して、リポジトリにタスクを作成します。

    タスクの作成を始めるには、GitHub のデベロッパー センターの例のリポジトリPowerShell ドキュメントで提供されている例を使用できます。

  3. リポジトリをカタログとしてデベロッパー センターにアタッチします

  4. 構成ファイルの記述に関する記事の手順に従って、それらのタスク用の構成ファイルを作成します。

Azure Key Vault のシークレットを使用する

Azure Key Vault のシークレットは、yaml 構成の中で使用してプライベート リポジトリをクローンすることや、アクセス トークンが必要なカスタム タスクを作成した場合に使用することができます。

Key Vault シークレットを yaml 構成の中で使用するために構成するには、以下のことが必要です。

  1. デベロッパー センター プロジェクトのマネージド ID に Key Vault の Key Vault 閲覧者ロールと Key Vault Secrets ユーザー ロールがあることを確認します。

  2. 使用する Key Vault シークレットの Secrets User ロールを、開発ボックスのカスタマイズ時にシークレットの使用権を必要とする個々のユーザーまたはユーザー グループに付与します。 ロールの付与対象とするユーザーまたはグループには、デベロッパー センターのマネージド 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 DevOps リポジトリ (Azure Repos) をクローンする場合、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}}'

Key Vault をインターネットに露出させないことが組織のポリシーで義務づけられている場合は、Key Vault の設定で、信頼の置ける Microsoft サービスにファイアウォール規則をバイパスさせることができます。

Azure のファイアウォール構成のスクリーンショット。[信頼された Microsoft サービスがこのファイアウォールをバイパスすることを許可する] がオンになっています。

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