AVD Custom Image Templateを利用してマスターイメージを作成してみる

### はじめに
2023/5/10 にAVDのカスタムイメージテンプレートなる機能がパブリックプレビューとなったらしいので試してみる。
以下のことができるようになり、AVDのマスターイメージ作りの手間がかなり軽減されるらしい。

    * 言語パックをインストールします。
    * オペレーティング システムのデフォルトの言語を設定します。
    * タイムゾーンのリダイレクトを有効にします。
    * ストレージセンスを無効にします。
    * FSLogixをインストールし、プロファイル コンテナを構成します。
    * Kerberos を使用して FSLogix を有効にします。
    * 管理されたネットワークの RDP ショートパスを有効にします。
    * 画面キャプチャ保護を有効にします。
    * Teams の最適化を構成する
    * セッションのタイムアウトを構成します。
    * Microsoft Office アプリケーションを追加または削除します。
    * Windows アップデートを適用する

詳細は以下記事参照
https://techcommunity.microsoft.com/t5/azure-virtual-desktop-blog/announcing-the-public-preview-of-azure-virtual-desktop-custom/ba-p/3784361

### 事前準備
利用を開始する前にいくつか準備が必要な模様。
以下ナレッジに従い進めていきます。
https://learn.microsoft.com/ja-jp/azure/virtual-desktop/create-custom-image-templates

## リソースプロバイダーの登録
事前に必要なリソースプロバイダーが登録されているか確認します。
1. Azure Portalよりサブスクリプションを選択します。
1. サブスクリプション内の設定→「リソースプロバイダー」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/2ccb1ac0-16f9-7c8a-2f9f-518ef0a8df0a.png)
1. 検索ボックス内に以下のリソースプロバイダーを入力し、「Registerd」となっているか確認します。
* Microsoft.DesktopVirtualization
* Microsoft.VirtualMachineImages
* Microsoft.Storage
* Microsoft.Compute
* Microsoft.Network
* Microsoft.KeyVault
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/e19ff426-3aac-66ff-dada-1f93f8c663d4.png)
1. Registerdとなっていないリソースプロバイダーは「登録」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/06f37c9d-1a0b-8726-a000-45a5cf86a54a.png)

## リソースグループの作成
カスタムイメージを格納するためのリソースグループを作成します。
既存のリソースグループを利用しても問題ないみたいです。
今回は以下パラメーターで作成してみました。
| 項目 | パラメーター |
|:-----------|:-----------|
| サブスクリプション | 環境による |
| リソースグループ | Rg-AVDCustomImageTemplate-001 |
リージョン | Japan East

## マネージドIDの作成
AVD Custom Image Template用のマネージドIDを作成したほうがよいそうなので、作成します。
1. Azure Portalにて「マネージドID」を検索します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/c73598d6-3679-1452-995c-81255a267499.png)
1. 「マネージドIDの作成」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/6024816a-5fb4-94bd-24ee-dababe058573.png)
1. 以下パラメーターにて作成します。

| 項目 | パラメーター |
|:-----------|:-----------|
| リソースグループ | Rg-AVDCustomImageTemplate-001 |
|リージョン | Japan East|
| 名前 | Managed-ID-001|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/dc85063a-ea8f-d707-2656-22a6f26f0ad9.png)

### カスタムロールの作成
独自の権限を持ったカスタムロールを作成します。
1. カスタムロールを作成するサブスクリプションまたは、リソースグループを開きます。
1. 「アクセス制御」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/229f6f50-05db-0960-fbe7-0f8ff53a5f82.png)
1. 「カスタムロールの追加」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/71f23851-2b08-0a3a-b9ee-3e6c172ed5ea.png)
1. カスタムロール名を入力し、「最初から始める」を選択し、次へを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/b1fe882b-527a-df9a-b054-52ad2753eb58.png)
1. 「アクセス許可の追加」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/2ec46d3f-3b90-1938-b975-2a1ff38424a9.png)

1. 以下権限を検索し、検索結果から選択します。
・ Microsoft.Compute/galleries/read
・ Microsoft.Compute/galleries/images/read
・ Microsoft.Compute/galleries/images/versions/read
・ Microsoft.Compute/galleries/images/versions/write
・ Microsoft.Compute/images/write
・ Microsoft.Compute/images/read
・ Microsoft.Compute/images/delete
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/8e2be1f5-f7ef-7f60-8ab0-0def30633a3b.png)
7. 選択後、権限にチェックをいれ、「追加」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/ff97b120-8899-cc5b-c0d2-c5e64ea7e945.png)
1. 権限の追加が完了しました。「確認と作成」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/d5905df8-4241-a905-3ea4-f5763e9acbdd.png)
1. 「作成」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/617593eb-e079-2599-0b51-0c85f9c7e25b.png)
1. OKを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/fae4d7dc-8924-25df-1906-e258bd8df585.png)

### RABCの割り当て
作成したカスタムロールを先ほど作成したマネージドIDに割り当てます。
1. 作成したマネージドIDを開きます。
1. 「Azureロールの割り当て」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/434b04f8-9d5f-1a20-e78f-b7945a0ad407.png)
1. 「ロール割り当ての追加」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/f2a62845-113c-566e-8327-4c508b209e79.png)
1. スコープにて「リソースグループ」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/359bb28e-0850-34cb-e9eb-b9725022cb7a.png)
1. リソースグループは、カスタムイメージを保存するリソースグループを選択します。
1. 以下パラメーターを選択し、「保存」を選択します。

    | 項目 | パラメーター |
    |:---- |:-------|
    | スコープ | リソースグループ |
    | サブスクリプション | それぞれのもの
    | リソースグループ | Rg-AVDCustomImageTemplate-001
    | 役割 | AVD Custom Image Template

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/fa328a61-8407-4e30-9505-c4b73dfbce4b.png)
1. カスタムロールが割り当てられたことを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/c733ab7f-494c-2a2c-d4f4-5ac41927e988.png)

### カスタムイメージの作成
ここからが本番です。
やっとイメージの作成を開始します。
1. Azure portalにて「Azure Virtual Desktop」を検索し、検索結果から選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/5fb1d95c-c9ab-0262-2044-e171c1235818.png)
1. 「Custom Image Template」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/8d80ec75-5bcb-02e5-33b0-ad899a6c9911.png)
1. 「カスタムイメージテンプレートの追加」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/95e2868e-e511-487c-9a2a-f58925f3d4c3.png)
1. 必要な項目を埋め、「次へ」を選択します。
    | 項目 | 設定値 |
    |:-----|:-------|
    |テンプレート名| Image-Template|
    既存のテンプレートからのインポート|いいえ
    サブスクリプション|そろぞれのやつ
    リソースグループ|Rg-AVDCustomImageTemplate-001
    場所|Japan East    
    マネージドID|Managed-ID-001
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/06a715fb-0747-086e-74fa-3595e39c48ad.png)
1. カスタムイメージのソースを選択します。既存のイメージギャラリーなどからも選択できるみたいです。今回は以下で進めます。
    |項目|設定値|
    |:---|:----|
    ソールの種類|プラットフォームイメージ
    イメージの選択|Windows 11 Enterprise Multi-Session,version 22H2
    Generation|V2

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/6a8b980b-2982-b3a6-25b9-99968f9cbd00.png)
1. 作成するイメージの定義を作成します。以下パラメータを入力します。
    |項目|設定値|
    |:---|:----|
    リソースグループ|Rg-AVDCustomImageTemplate-001
    イメージ名|ManagedImage-001
    場所|Japan East
    実行の出力名|よくわからないので適当に

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/d76a2f6b-d84e-7af1-9455-34925be748c0.png)
1. 利用する仮想マシンやタイムアウト値をセットします。
    |項目|設定値|
    |:---|:----|
    ビルドのタイムアウト|規定値のまま
    ビルドVMサイズ|Standard_D2s_v4 -Recommended for Gen2
    OSディスクのサイズ|127
    Staging Group|空白
    vNet|空白
    サブネット|空白

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/7d691b9e-adf3-e309-7fa2-8cc106fb1aa5.png)
1. ここでいろいろイメージのカスタマイズを実行します。以下のような感じでやってみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/2cd53af5-c8cb-f918-ecef-dcc1b4c7f0b0.png)
1. 設定が完了したら、「作成」を選択します。
1. 作成したイメージテンプレートを選択し、「ビルドの開始」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/373f46a9-0c76-32e7-55aa-375059ae968a.png)
1. イメージのビルドステータスが「実行中」に変わったことを確認し、しばらく待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/0b222a53-cf91-5d54-3b42-0076e4e24c3b.png)
1. テンプレートのプロビジョニングの状態が「Scceeded」になっていれば完了。私の環境では、10分ほどで作成が完了した。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258122/0201f6b5-f5c1-1665-5f92-a9937b2628b7.png)

### まとめ
言語パック込みのマスターイメージがお手軽に作れるのはとても楽。
使い方次第では、独自のスクリプトも組み込めるので、マスターの更新作業がとても楽になりそう。