こんにちは、駆け出しアーキテクトのやまぱんです。
まず初めにこの記事は次の記事のインスパイア記事です。
上記をトレースしつつ、UIが変わっていたり、自分がハマったポイントなども少しあったり、自分なりに補足する形でリライトした記事になります。
というわけで Azure Virtual Desktop、いわゆるAVD(旧WVD)の環境をサクッとサクッと作りたい方向けの記事になります。
所要時間は習熟度にもよると思います待ち時間が結構ある (特にAADDS) 部分もあるので3~4時間ぐらいだと思います。
Azureサブスクリプション
ここではMicrosoftアカウントに紐づけたVisual Studioサブスクライバー向けのAzureを使っていますが、無料トライアルなどでもOKでしょう。
今回、新規にAzure AD Domain Servicesを構築するため、Azure ADに対しては"全体管理者"特権が必要です。
Visual Studioや無料トライアルなどでMicrosoftアカウントに紐づけたサブスクリプションをご利用であればこの権限があるはずですが、企業アカウントの場合はこの権限がないかもしれないのです。
ユーザー
こちらもインスパイア元の記事を踏襲しています。
AD管理のためのユーザーを1名、検証用ユーザーを2名用意することにします。
新規に作成する例をここでは取り上げますが、既存であればそちらを使ってもかまいません。
ユーザー名 | 役割 |
---|---|
mgr | 管理者 |
hanako | 利用者1 |
taro | 利用者2 |
検証環境全体図
こんな環境を作っていきます。(こちらの図もインスパイア元の記事をそのまま借りています。)
RGの作成
Vnet(仮想ネットワーク)作成
default の vnet をAVD の VM 用に利用するものとする。
AADDSの作成(Azure AD(Active Directory) Domain Services)の作成
今回はAADのADDS機能を使う(オンプレADDSとの連携はしない)シンプルな環境です。
余談
このほかに、オンプレのADDSと連携したり、AADもオンプレADもDSなしで構成する Azure AD Join という構成も可能です。
SBSC&Sさんの記事で Azure AD Join のものがありましたので紹介しておきます。
では、はじめましょう!
Azure Portal の検索窓から AAD などで検索して Azure AD Domain Services を選択
2023/03/08(水)時点ではAADDSの作成の画面が英語 Azure Portal になっていた。
ローカルランゲージへの翻訳は遅れがあるので、しばらくすると日本語に変わると思われる。
AADDSとは
AADDSはIaaS(オンプレ)のADDSのAADバージョンです。
前者のAAD版とオンプレ版のADDSの機能の違いについては下記に記載されています。
https://learn.microsoft.com/ja-jp/azure/active-directory-domain-services/compare-identity-solutions
下記はその抜粋
Basic タブ
Networking タブ
ネットワークでは、先ほど作成した仮想ネットワーク Vnet-avd を選び、サブネットは専用のサブネットを新規作成するため、表示されたまま (新規作成 - New) にします。
他のタブはそのまま
他のタブはそのままの設定
デプロイ確認
(抄訳)このディレクトリに対して Azure AD Domain Services を有効にすることで、NTLM および Kerberos 認証に必要な資格情報ハッシュを Azure AD に格納することに同意したことになります。
デプロイ開始
時間がかかる
完成確認
AADDSブレードに作成したAADDSサービス (konoha.avd.test) ができていることを確認
AADDSの設定
DNSサーバの設定を行う
初回アクセス時は出ないことがあるのでその場合は Refresh をクリックして下記の警告メッセージを表示させクリックする。
Run をクリック
Click the "Run" 、日本語ブレードに変わっていたら(おそらく) "実行" をクリック。
【上記英文抄訳】
ネットワーク診断は、Azure AD Domain Services が設計どおりに動作するのを妨げる不足または既知の構成について、論理的な Azure Resource Manager ネットワーク環境をチェックする機能を提供します。
[実行] をクリックして、Azure AD Domain Services をホストしているネットワーク サブネットを診断します。
fix をクリック
さらに fix をクリック
【抄訳】
- 問題が見つかりました
マネージド ドメイン サービス IP 10.0.1.5、10.0.1.4 の DNS サーバー設定は、仮想ネットワーク Japan East/Vnet-avd 用に構成する必要があります- 解決
Azure AD Domain Services のネットワーク構成ガイドラインに従って、次の修正が提案されています。
東日本/Vnet-avd でマネージド ドメイン サービス IP 10.0.1.5、10.0.1.4 の DNS サーバー設定を追加します。
修正は、手動で実行するか、下の [修正] をクリックして実行できます。下の [修正] をクリックすると、提案された修正がお客様に代わって実行されることに同意したことになります。
Running が表示される
なぜかそのまま warning がのこっていた が、その後、メッセージに表示されている vnet (Vnet-avd) の画面でDNS設定を見てfix (DNSのIPアドレス( IP 10.0.1.5、10.0.1.4 ) が適応)されていること を確認する。
グループ・ユーザーの作成
Azure ADにAVDを利用できるユーザーのグループを作成します。
Azure Portal → AAD を選択する。
セキュリティグループの作成
**3分 ~ 5分ぐらいすると、グループブレードの中に作成したグループが確認できます。
ユーザーの作成
下記のユーザーを作成します。
ユーザー名 | 名前 | グループ |
---|---|---|
mgr | AD Manager | AAD DC Administrators |
hanako | Hanako Micro | AVD_Users |
taro | taro Micro | AVD_Users |
AADのユーザーブレードから作成します。
この時、初期パスワードを設定しておきます。
また、ドメインが konoha.avd.test (先ほどAADDSで設定したしたものになっていなくても今回は問題ありません。 デフォルトで出てくるもののままで結構です。
このドメイン名は Azure にログインする際に必要となりますのでメモしておきましょう。
なお、AADDSで設定したドメインはAVDのVMに入る際に必要になります。
作成したユーザーで一度ログインする
mgrユーザーの初期パスワードを恒常的なパスワードに変更するため、一度ログインします。
例えばブラウザEdgeを右クリックしてInPrivateウインドウを開き、Azure Portal に作成したmgrアカウントでログインします。
ここでログインするアカウントのドメインは、Azure AD のドメイン名(今回は mgr@XXXXXXXX.onmicrosoft.com)で、AADDS のドメイン konoha.avd.test ではない ことに注意してください。
Azure Files (プロファイル保管用ファイルサーバー)の作成
まずストレージ アカウントの作成
ストレージ アカウントの名前は小文字英文字かつユニークである必要があるので適当につけます。
今回は下記のように作成しました。
ファイル共有の作成
AADDSのユーザーからのアクセスをできるようにする。
AADDSのユーザーを受け入れるようにストレージ アカウント側で設定。
"Active Directory:構成されていません" をクリックして下記の流れで設定します。
つぎに設定したAADDSのグループに対してアクセス権を設定します。
こんな感じで設定します。
ロールは "記憶域ファイルデータのSMB共有の管理者特権の共同作成者" です。
Docsとしてはこのあたりになります。
ファイル共有の URLをコピー
あとでつかうので URL を コピーしておきます
"https://konohaavdpro XXX .file.core.windows.net/profile"
グループポリシーの設定
管理用の Azure VM の作成
AD DSのポリシー設定をするため、管理用のVMを作成します。
こちらはMicrosoftのドキュメントがありますので、これを参考に作成します。
・Windows Server VM をマネージド ドメインに参加させる
今回は Windows Server 2016 で作成します。
- リソースグループ;RG-AVD-test
- VM名:VM-AVDmanagewins2016
- イメージ:Windows Server 2016 Gen1 [samalldisk]
検証用なので、smalldiskでサイズもB2msで下記のようなパラメータで作成します。
管理用の Azure VM のドメイン参加
作成した Azure VM に作成時に作成したローカルユーザーでRDPして、ドメイン参加します。
ここで参加するのはAADのドメインではなく、AADDSのドメインです。
つまり今回であれば mgr@konoha.avd.testです。
*一応日本語化してますが、後述する通りなので検証用AVD環境を作る目的であればいったん英語版のまま進めてもよいかと思います。
下記の要領でドメイン参加します。
(ついでにキリが悪いので コンピューター名も -wi を削除しています。)
パスワードを間違えすぎると下記のようなメッセージがでますので注意しましょう。
Ref:)
・Azure Active Directory Domain Services マネージド ドメインでアカウントがロックアウトされる問題を解決する
https://learn.microsoft.com/ja-jp/azure/active-directory-domain-services/troubleshoot-account-lockout#common-account-lockout-reasons
”既定では、2 分間で 5 回パスワードの入力に失敗すると、アカウントは 30 分間ロックアウトされます。”
日本語化の影響かドメイン参加後にRDP使用とした際にNLAエラーが出たので、もしでた際にはこちらを参考にしてください
- Azure VM でNLAエラーが出たときの回避策
https://qiita.com/aktsmm/items/81b441ee813293f13017
グループポリシーの機能の追加
FSLogix ポリシー設定
FSLogix とは
https://learn.microsoft.com/ja-jp/fslogix/overview
上記より抜粋。
FSLogix は、Windows リモート コンピューティング環境でのユーザー プロファイルを強化して有効にします。 物理デバイスを使用するときに、FSLogix を使用して、移植性の高いコンピューティング セッションを作成することもできます。
- FSLogix には次のものが含まれます。
プロファイル コンテナー
Office コンテナー
Application Masking
Java Version Control- FSLogix を使うと、次のことができます。
リモート コンピューティング セッション ホスト間でユーザー データをローミングする
仮想デスクトップ環境へのサインイン時間を最小限にする
ホストやクライアントとリモート プロファイル ストアの間のファイル IO を最適化する
ローカル プロファイル エクスペリエンスを提供し、ローミング プロファイルを不要にする
アプリケーションと "ゴールド イメージ" の管理を簡素化する
特定の URL とアプリケーションによって使われる Java のバージョンを指定する
必要ファイルのダウンロード
まず、ここ(https://aka.ms/fslogix_download) にあるファイルをWindows Server内にダウンロードします。
ダウンロードしたZipファイルを展開したら、下記のファイルをコピーします。
ファイル | コピー先 |
---|---|
fslogix.admx | C:\Windows\PolicyDefinitions |
fslogix.adml | C:\Windows\PolicyDefinitions\en-US |
Group Policy Management の設定
Group Policy Managementを起動して、AADDC Computer GPOを右クリックし、Edit..
グループポリシーの管理(Group Policy Management)を起動
AADDC Computer GPOを右クリックし、Edit(編集)..
開いたGroup Policy Management Editorから、下記のようにFSLogixのProfile Containersを開き、下記の設定を行います。
Setting | Value |
---|---|
Enabled | On |
Delete local profile when FSLogix Profile should apply | On |
VHD Location | <ファイルシェアへのパス>を設定 |
ファイルシェアへのパスは、Azure Filesの項目で作成したファイル共有へのURLをUNCで記述します。
例えば
"https://konohaavdpro XXX .file.core.windows.net/profile"
であれば、
\\konohaavdpro XXX .file.core.windows.net\profile
となります。
一応の補足すると"\
"は "半角¥マーク"でも入力できます。
タイムゾーンのリダイレクト設定
- [コンピューターの構成] → [ポリシー] → [管理用テンプレート:ローカル~~] → [Windows コンポーネント] → [リモートデスクトップサービス] → [デバイスとリソースのリダイレクト] → ”タイムゾーン リダイレクトを許可する” を"有効"にします。
英語版
- [Computer Configuration] → [Policies] → [Administrative Templates] → [Windows Components] → [Remote Desktop Services] → [Remote Desktop Session Host] → [Device and Resource Redirection] → "Allow time zone redirection"を"Enabled"に設定します。
マスターイメージの作成
イメージ用仮想マシンの作成
セッションホスト用のマスターイメージを作成します。今回は、Windows 10 multi-sessionを利用します。
Azure でしかつかえない AVD 向けのOSらしいです。
イメージ作成用で、AVDユーザーが利用するわけではありませんから、VMのサイズなどはあまり気にしなくて構いません。
下記のような設定値で作成します。OSは必ずマルチセッションを指定します。
FSLogix のインストール
Azure VM の作成が終わったら管理用のWindows Server と同様にここ(https://aka.ms/fslogix_download) にあるファイルを Windows 内にダウンロードします。
ダウンロードしたZipファイルを展開します。
展開した中から、x64\Release\FSLogixAppsSetup.exe を実行して、FSLogixをインストールします。
イメージの汎用化準備 (Windowsアップデート&日本語化)
諸々アップデートして各種表示を日本語、時刻もUTC+9:00化します。
言語パックインストールして再起動後もWindows Update を確認してこれ以上アップデートが無いことを確認
言語パック周りが原因でsysprepでエラーでるのでここは丁寧に!!
日本語化が目的でなければいったん英語版のまま進めてもOKだと思います。
一度、sysprep で下記のようなエラーが出ました。
C:\Windows\System32\Sysprep\Panther\setupact.log
> Package Microsoft.LanguageExperiencePackja-JP_19041.56.182.0_neutral__8wekyb3d8bbwe was installed for a user, but not provisioned for all users. This package will not function properly in the sysprep image.
下記参考にする
- MSサポートの公式ブログ
・AVD ARM 日本語化イメージ作成手順について | Microsoft Japan Windows Technology Support Blog (jpwinsup.github.io)
https://jpwinsup.github.io/blog/2021/01/20/RemoteDesktopService/AVD/AVD-ARM-Japanese-image/ - MS社員のブログ
・Azure Image Builder で 日本語化を楽し隊 | クラウドを勉強し隊 (kentsu.website)
https://www.kentsu.website/2022/12/09/azure-image-builder-%E3%81%A7-%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%8C%96%E3%82%92%E6%A5%BD%E3%81%97%E9%9A%8A/
下記のスクリプトを使うことで自動化することもできるよう。(今回は試していません。)
・azureimagebuilder/AIBscript.ps1 at main · NakayamaKento/azureimagebuilder (github.com)
https://github.com/NakayamaKento/azureimagebuilder/blob/main/win10ja/AIBscript.ps1
イメージの汎用化
下記コマンドにて sysprepを行い、OSを一般化します。
C:\Windows\System32\Sysprep\sysprep.exe /generalize /oobe /shutdown
マスターイメージのキャプチャ
イメージを保存するため、先ほどsysprepした仮想マシンのキャプチャを行います。
状態が停止済みであることを確認して、キャプチャを押します。
共有イメージギャラリーにイメージを置かず、キャプチャした後はこのVMを使わなくなりますので、削除します。
作成したイメージの確認
Azure Portal → イメージ にて作成したイメージが確認できる
AVD環境構築
ようやくAVDの構築です。
ホストプールの作成
Azure Portal → "azure virtual desktop" を検索し選択します。
ホストプールの作成ボタンを押して、作成していきます
こんな感じで作成していきます。
基本タブ
仮想マシンタブ
ワークスペースタブ
以上の設定をして作成します
AVDホストプール作成設定まとめ&作成
ホストプールの作成が終われば、最後に、利用できるユーザーを割り当てます。
作成の際にアプリケーショングループができているので、これを開き、割り当てを選択して、AVD_Usersを追加します。
ホストプール → アプリケーショングループ → host-pool-DAG(作成されているアプリケーショングループ) → 割り当て → 追加
Azure VM の確認
設定したprefix の Azure VM が設定した台数分作成されていることが確認できます。
接続テスト
WEbClient
- こちらにアクセスします。
https://rdweb.wvd.microsoft.com/arm/webclient
アカウント作成後はじめてのログインの場合はパスワードを変更する必要あり。
- AVDのVMに入る
こちらはAADDSのドメインユーザーで参加します。
こちらの例では hanako@konoha.avd.test
無事にログイン完了!
デスクトップクライアントもある
今回は省略しますが、下記からダウンロードできます。
Windowsクライアントにソフトウェアをインストールして利用します。
下記のものが用意されていますので、環境に合わせてインストールします。クライアントに管理者権限がなくても大丈夫。
• Windows (64 ビット) https://go.microsoft.com/fwlink/?linkid=2068602
• Windows (32 ビット) https://go.microsoft.com/fwlink/?linkid=2098960
• Windows ARM64 https://go.microsoft.com/fwlink/?linkid=2098961
クライアントをインストールして起動すると、登録ボタンを押して進みます。
参考 URLなど
公式Docs
- Azure Virtual Desktop のドキュメント
https://learn.microsoft.com/ja-JP/azure/virtual-desktop/
AVD 系に詳しいブログ
- くらう道
AVD で気になることがある場合下記のMS 社員のブログが非常にオススメです。
AVDって完全閉域環境で使えるのか?だと下記を読めばわかります。
その他の必要な通信はプライベートリンク以外から通す必要がありますので、完全に閉域化できるわけではありません。
途中でも紹介した URLたち
- MSサポートの公式ブログ
・AVD ARM 日本語化イメージ作成手順について | Microsoft Japan Windows Technology Support Blog (jpwinsup.github.io)
- MS社員のブログ
・Azure Image Builder で 日本語化を楽し隊 | クラウドを勉強し隊 (kentsu.website)
下記のスクリプトを使うことで自動化することもできるよう。(今回は試していません。)
・azureimagebuilder/AIBscript.ps1 at main · NakayamaKento/azureimagebuilder (github.com)