Azure

WindowsVirtualDesktopがGAされているので(その1)

GAされてもう2か月たってますが…

WindowsVirtualDesktop(以下WVD)とは

AzureにおいてのMS純正のVDIです。
費用についても基本はMicrosoft365等のMSライセンス ※1 があればAzure上仮想マシンのランニングコストだけで済みます。
ユーザ管理についてもAzure AD Connectが使用できるため、既存のADユーザをそのまま流用することができます。
…ちょっとAzureのパスワード文字列制限がありますが。

また、Windows10クライアントにおけるマルチセッション接続を唯一おこなうことができる代物です。 ※2

※1.Microsoft 365 E3/E5/A3/A5/Business/F1 or Windows E3/E5/A3/A5 の何れか
※2.Amazonworkspace等はWindows10に動作をしていますがプロパティを見ると普通にWindowsServerが動作

基本的な構造

プレビュー時と変わってないため基本的な構造としては

・コントロールプレーン(MS管理)
 - RDGateway
 - RDWebAccess
 - Connectionbroker
 - Database
 - license

・仮想マシン、他(ユーザ側管理)
 - AzureAD
 - AzureADDS(またはAzureADConnect+ActiveDirectory)
 - HostPool
 - 接続元端末

となります、雑ですが以下な感じ。

必要なもの

最低限以下が必要となります。
・Microsoft 365 E3/E5/A3/A5/Business/F1 or Windows E3/E5/A3/A5 の何れか
・RDS Software Assurance CAL(サーバOS使用時)
・Azureサブスクリプション(要AzureADが管理できるアカウント)
※Windows E3/E5/A3/A5のライセンスだけを所持し、Officeが必要な場合はOffice365も

なおライセンスの管理ですが、OSライセンスに関してはAzureADで管理しますが
RDSライセンスに関しては登録先はなく、紳士協定扱いとのことです。

とりあえず作ってみる

今回の検証では全部Azureで完結させるためにAzureADDSを使用してます。

①AzureADへのアプリケーションの追加
まずAzureADにアプリケーションを追加しないといけないので以下のURLに接続します。
【Windows Virtual Desktop】
https://login.microsoftonline.com/common/adminconsent?client_id=5a0aa725-4958-4b0c-80a9-34562e23f3b7&redirect_uri=https%3A%2F%2Frdweb.wvd.microsoft.com%2FRDWeb%2FConsentCallback
【Windows Virtual Desktop Client】
https://login.microsoftonline.com/common/adminconsent?client_id=fa4345a4-a730-4230-84a8-7d9651b86739&redirect_uri=https%3A%2F%2Frdweb.wvd.microsoft.com%2FRDWeb%2FConsentCallback

それぞれ接続時にAzureログインの画面が表示されるのでAzureADの操作権限を持ったアカウントで接続し、「要求されているアクセス許可組織として承認する」をそのまま承諾します。

1分ぐらい待つとAzureADへ「Windows Virtual Desktop」と「Windows Virtual Desktop Client」のアプリケーションが表示されます。
更新中は出たり消えたりします。

更新されたら「Windows Virtual Desktop」の「ユーザーとグループ」を選択し、WVD管理ユーザを[TenantUser]のロールとして登録します。


②テナント/サービスプリンシパル/ロール割り当ての実施
以下powershellを実行。

# Azureログイン
$aadContext = Connect-AzureAD

# RDSアカウントログイン(Serviceに登録し、仮想マシンの作成などができるものを指定)
Add-RdsAccount -DeploymentUrl "https://rdbroker.wvd.microsoft.com"

# 作業用のモジュール追加
Import-Module -Name Microsoft.RDInfra.RDPowerShell
Import-Module AzureAD

# 変数定義
$myTenantName = "AzureADTenant" # AzureADテナント名
$HostPoolName = "HostPool" # ホストプール名
$AADTenantID ="********-****-****-****-************" # AzureADテナントのID
$SubscriptionID ="********-****-****-****-************" # AzureSubscriptionのID

# テナントの作成
New-RdsTenant -Name $myTenantName -AadTenantId $AADTenantID -AzureSubscriptionId $SubscriptionID

# サービスプリンシパルの作成
$svcPrincipal = New-AzureADApplication -AvailableToOtherTenants $true -DisplayName "Windows Virtual Desktop Svc Principal"
$svcPrincipalCreds = New-AzureADApplicationPasswordCredential -ObjectId $svcPrincipal.ObjectId

# ロールの割り当て
New-RdsRoleAssignment -RoleDefinitionName "RDS Owner" -ApplicationId $svcPrincipal.AppId -TenantName $myTenantName

# サインインの確認
$creds = New-Object System.Management.Automation.PSCredential($svcPrincipal.AppId, (ConvertTo-SecureString $svcPrincipalCreds.Value -AsPlainText -Force))
Add-RdsAccount -DeploymentUrl "https://rdbroker.wvd.microsoft.com" -Credential $creds -ServicePrincipal -AadTenantId $aadContext.TenantId.Guid

サインインを2回求められます。
1回目:Azureportalへのログイン
2回目:RDS管理者のログイン([TenantUser]のロールとして登録したユーザ)

となりますので、別のアカウントを使用した場合は別のユーザを入力してください。
筆者は権限確認がめんどくさいので同じにしました。

③マスタの作成
で、そのままAzureportalのほうから作成、と行きたいところですが
日本人がそのままマスタとして使うにはAzure特有の仕様として以下があります。

言語が英語


またFSLogixを使用する場合、Azure側で用意されているマスタにはエージェントが入っていないためエージェントをインストールしたマスタを作成する必要があります。
# FSLogixの細かいことについては別途記載予定

●マルチセッションOSのイメージを使用して仮想マシンを作成
マルチセッションのWindows10を使用する場合はマルチセッション用のWindows10が用意されているのでそれを使用します。

●言語の日本語化
特にAzureを使用するにあたっては特殊な操作ではないので記載は割愛。

●FSLogixエージェントのインストール
エージェントを以下からダウンロードして解答します。
https://aka.ms/fslogix_download

今回は移動プロファイルとして機能させるために入れるため、以下をインストールします。
\x64\Release\FSLogixAppsSetup.exe

インストール自体は実行のみとなり(ライセンス許諾チェックはありますが)実行して「Next」を押していればそのまま入ります。

●GPOの準備
当然エージェントだけでは設定はできませんし、既存のグループポリシーでは対応できませんので以下テンプレートをAD側に登録します。
fslogix.adml → C:\Windows\PolicyDefinitions\en-US\fslogix.adml
fslogix.admx → C:\Windows\PolicyDefinitions\fslogix.admx

また、ADのテンプレートはWindows10(1903)に更新しておきましょう。(2019/10/31現在)
テンプレートの考えは普通にWindows10をグループポリシーで管理するときと同じです。

ポリシーの設定は格納先によって異なります。
普通にファイルサーバの共有フォルダへ格納する場合は以下となります。

# ストレージBlobを使用する場合の設定は別途記載予定

●Windowsアップデート
最新のセキュリティパッチは当たっていないため当てておきます。

●Sysprep実行事前準備
言語パックをインストールした場合はストアアプリより投げ込まれる言語パックが
sysprepの邪魔をするため、以下のpowershellでRemove-AppxPackageの実行が必須となってます。
日本語の問題を引き起こす言語パックを削除するには以下コマンドになります。
(Windows10_1903 2019/10/31現在)

Remove-AppxPackage Microsoft.LanguageExperiencePackja-JP_18362.14.46.0_neutral__8wekyb3d8bbwe

ついでにストアアプリの自動更新も無効にしておいたほうがいいでしょう。

●Sysprep実行
 一般化するにチェック、およびシャットダウンオプションを「シャットダウン」にして実行します.1
 シャットダウンした後はAzureポータルよりマスタ化すれば完了です。

●マスタを使用した展開(Pooled)
# 基本的にPersonalもPooledも設定が同じとなるため以下はPooledの方式で記載

まずリソースの作成より「Windows Virtual Desktop – Provision a host pool」を検索して作成。

●基本
サブスクリプション/リソースグループ:リージョン:東日本
Hostpool name:HostPool # ホストプール名
Desktop type:Pooled
Default desktop
users:User01@contoso.onmicrosoft.com,User02@contoso.onmicrosoft.com,~ # カンマ区切りでWVDへ接続するAuzreADのユーザを全登録
ServiceManagerLocation:United States # 固定

●configure Virtual machines
Usage Profile:custom # 他はサイズとユーザに合わせて自動で仮想マシン数が決定
Total users(custom以外の場合):VDI利用者数
Number of Virtual machines(customの場合):作成する仮想マシン数
Virtual machine size:デフォルトは[D8s v3]
Virtual machine name prefix :MachineName # 仮想マシン名、名前の後ろに数字が連番で付与される

●Virtual Machine Settings
Image source:Managed Image
Image name:VMTemplate-xxxxxxxx # テンプレート名
Image resource group name:作成したマスタを格納しているリソースグループ名
Disk Type:Premium SSD/Standard SSD/Standard HDD
AD domain join UPN:Administrator@contoso.com # ADへ参加するために使用するユーザ
Admin Password: # ADへ参加するために使用するパスワード
          ※ドメイン参加用ユーザのパスワードが13文字以下だとエラーとなって設定が行えない
           Azureポータルにそのポリシーはなく、WindowsADの場合は7文字のため、              一般の運用だと確実にエラーとなるため注意が必要
Specify domain or OU:yes # OU分けを行わない場合は不要
  Domain to join:contoso.com # ADドメイン名
  (Optional) OU path:OU=WVD,DC=contoso,DC=com # OUが間違っているなど設定を間違えていると展開時にエラー
Virtual network:WVDNW # WVD端末の所属するネットワーク
Subnets:SubnetCL # WVD端末の所属するサブネット

●Windows Virtual Desktop information
Windows Virtual Desktop tenant group name:Default Tenant Group # 変更非推奨の模様
Windows Virtual Desktop tenant name:AzureADTenant # AzureADテナント名
Windows Virtual Desktop tenant RDS Owner:UPN
UPN:Administrator@contoso.onmicrosoft.com # RDS管理者用アカウント
Password: # RDS管理者アカウントのパスワード

全設定後、作成を実行すると自動でWVD用の仮想マシンが展開されます。

あとは30分ぐらい眺めていると出来上がります。 記事が長くなってきたので接続や備考は別記事で…

Azure AD Connectの構築トラブルメモ前のページ

WindowsVirtualDesktopがGAされているので(その2)次のページ

関連記事

  1. Azure

    AzureMonitorで作成できるアラートの種類と制限

    AzureMonitorのアラートの種類と制限について…

  2. Azure

    Azureクラシックリソース(Azure Service Management)VMの廃止について

     こんにちは。三醍醐です。 先日、クラシックVMが2023年…

  3. Application Gateway

    L7負荷分散 Azure Application Gateway について:1回目

    はじめまして。Azure推進チーム構成員のヤモトと申します。…

  4. Azure

    Loganalyticsを利用してログを分析する

    取得したログを分析、必要なログを確認する Loga…

  5. Office 365

    Office 365 F3(旧F1)

    こんにちは、三醍醐です。今回はAzureの話ではなく、同じく…

  6. Application Gateway

    L7 負荷分散 Azure Application Gateway について:3回目

    こんにちは。ヤモトです。今回はApplication Gat…

関連記事

  1. Azure

    祝日判定を使った自動起動について:Azure Automation
  2. Azure

    Loganalyticsを利用してログを分析する
  3. Azure

    Azureクラシックリソース(Azure Service Management)…
  4. Azure

    Runbookで管理タスクを自動化する。
  5. Azure

    Azure CDNでマルチオリジンをやってみる記事
PAGE TOP