この記事のWVDは”Windows Virtual Desktop Fall 2019 Release”が対象です。最新の”Spring 2020 Relase”ではありません。Spring 2020 はこちら
Azure上で仮想デスクトップを実現する”Windows Virtual Desktop(WVD)”を実際に環境構築してみます。
WVDの作成は以下の流れで進めます。 今回の記事は”2. Host pool作成”になります。
- Tenant作成
- Host pool作成
- App group作成
- 接続テスト
目次
1. システム構成について
システム構成イメージは以下の通りです。 Azure 上のWVDですが、Active Directory のドメインコントローラー(AADS)はAlibaba Cloud 上に構築し、VPNでAzure接続しています。 また、Alibaba Cloud 上のAADSはAzure ADとAzure AD Connect (AADC)で同期しているいわゆるハイブリッド構成です。
今回の記事ではAzure上の”Windows Virtual Desktop”の構築が対象となります。
2. 構築の手順について
WVDの構築手順は公式のドキュメントを参考に進めます。
「Tutorial: Create a host pool with Azure Marketplace」
https://docs.microsoft.com/ja-jp/azure/virtual-desktop/create-host-pools-azure-marketplace
上記のチュートリアルのページで以下の構築手順が紹介されています。この順番通りに進めていきます。
- MarketplaceからのHost poolのプロビジョニング
- 仮想マシンの作成
- Desktop App Groupへのユーザの紐づけ
3. MarketplaceからのHost poolのプロビジョニング
3.1. WVD リソースの作成
Azure ポータルからWVDのリソースを作成します。
”+リソースの作成”から”Windows Virtual desktop”を検索し、”Windows Virtual Desktop – Provision a host pool”をクリックします。
”作成”をクリックします。
”1 基本”の設定を行います。 ポイントは以下の5点です
- Hostpool nameにプール名を指定 (任意の文字列)
- Desktop Typeに”Pooled”または”Personal”を指定 (今回はWindows 10のMulti Sessionsを利用するためPooledを選択します)
- Default desktop usersにデスクトップにサインインするアカウントを指定(後から追加も可能ですがその場合はPowerShellからのみとなります)
- リソースグループは新規 (空っぽのリソースグループが必要なので基本は新規。または、事前に専用のリソースグループを作成し指定する)
- 場所にリージョンを指定 (画面上は米国ですが実際には東日本を選択)
ここで場所のリストボックスを確認してみます。 ”東日本”を選ぶことが出来ます。 WVDは米国の2リージョンのみだったはずです。
もう一度ドキュメントを確認します。 よく読んでみるとVirtual Machineはすべてのリージョンに展開可能であること、管理機能とデータは米国の2リージョンにあることが記載されていました。 結論として、仮想マシンは日本のリージョンに展開できるようですね。 米国のリージョンの”データ”が具体的にどんなものになるのかはテストしながら調べてみることにします。
During public preview, desktops and apps can be deployed on virtual machines (VMs) in any Azure region, and the management solution and data for these VMs will reside in the United States (US East 2 region). This may result in data transfer to the United States while you test the service during public preview.
https://docs.microsoft.com/ja-jp/azure/virtual-desktop/overview
ということで、”場所”には”東日本”を指定することにします。
次は”2 Configure virtual machines”の設定です。 既定の構成は以下の画面です。
検証目的なのでダウンサイジングします。
次は”3 Virtual machine settings”です。既定の構成は以下の画面です。
以下の構成に変更しました。 ここではOSのバージョンやADDSへのドメイン参加に利用するアカウント情報(UPNとパスワード)、OUの指定、Vnetなどを指定します。
以下の3つのイメージが提供されています
・ Windows 10 Enterprise multi-session with Office 365 ProPlus
・Windows 10 Enterprise multi-session
・Windows Server 2016 Datacentor
次は”4 Windows Virtual Desktop Information”です。 既定の構成は以下の画面です。
以下の構成に変更しました。ここではAzure ADの必要な権限のあるアカウントを指定します。
”Windows Virtual Desktop Tenant name”にはTenant作成時に指定したテナント名を指定します。(New-Rdstenant コマンドレットを実行時に指定したもの)
”5 概要”で構成内容を確認し、問題なければ”OK”をクリックします。 なお、”テンプレートとパラメーターのダウンロード”もダウンロードしておきます。
テンプレートは以下の画面からダウンロード可能です。
最後に”6 購入”です。”作成”をクリックします。
デプロイの完了画面は以下の通りです。 今回は1台のVirtual Machineの展開でしたがかかった時間は14分45秒でした。
3.2. dscextension でデプロイに失敗する場合
上記のデプロイ成功に至る前に、dscextensionのフェーズで失敗する問題が発生しました。 結論を先にいうと単純な手順の実施漏れだったのですが、、、参考になることもあるかと思い共有します。
具体的な画面は以下になります。5つの目の処理となる”WVD3VM-0/dscextension” が”Conflict”ということで失敗しました。
”操作の詳細”を確認します。
右に表示されたブレードの状態メッセージを確認します。画面では全文表示されない場合があります。その場合はコピーペースト可能です。
以下、状態メッセージの抜粋です。
{ “status”: “Failed”, “error”: { “code”: “ResourceDeploymentFailure”, “message”: “リソース操作が完了し、ターミナル プロビジョニング状態は ‘Failed’ です。”, “details”: [ { “code”: “VMExtensionProvisioningError”, “message”: “拡張機能 ‘dscextension’ を処理しているときに、VM がエラーを報告しました。エラー メッセージ: \”DSC Configuration ‘FirstSessionHost’ completed with error(s). Following are the first few: PowerShell DSC resource MSFT_ScriptResource failed to execute Set-TargetResource functionality with error message: User is not authorized to query the management service.\nActivityId: XXX-XXX-XXX\nPowershell commands to diagnose the failure:\nGet-RdsDiagnosticActivities -ActivityId XXX-XXX-XXX\n The SendConfigurationApply function did not succeed.\”。” } ] } } |
”Set-TargetResource”に失敗していることがわかります。 また、”User is not authorized”ということで権限の問題ということもわかります。
以下の技術ブログを参考にしましたが解決しませんでした。このブログではWVDの様々なエラーについて具体的に解決策を紹介しており大変参考になりました。
Microsoftの海外フォーラムでも同様のエラーメッセージについて様々な議論が交わされていました。
スレッドで紹介されていた以下の記事ではWVD展開の具体的な手順を解説含めて紹介されていました。
この記事を読んでいくと、冒頭の”Add RDS tenant”について私が実施した記憶のない手順があります。
結論から言うとドキュメントにある手順が漏れていました。
漏れていた手順はTenantCreatorのロールの追加とPowerShellでの”New-RdsTenant”の2点です。 このブログの以下の過去記事も併せて修正しました。
以上