Dear Great Hackers

  1. タイアップ
  1. トピックス

【Windows Virtual Desktopのディープな技術情報を解説】#4 VMのイメージ更新

共有イメージギャラリーはAzureでカスタムイメージに基づいて構造を作成するために役立つサービスで、1つの地域内でのスケールアップも複数の地域にわたるスケールアウトも可能です。イメージをAzureポータルに取り込んで使うことで、プール内のセッションホストの更新を自動的かつより容易に行うことができ、ホストを可能な限り最新の状態に保つことができます。

今回はWindows Virtual Desktop(以下、WVD)でのギャラリーの使い方に焦点を当て、共有イメージギャラリーを使ってWVDホストプールを自動更新する方法を説明します。

※この記事は、Microsoftが提供するUpdate Session Hosts from Latest Image | Windows Virtual Desktop – #04を要約したものです。
※共有イメージギャラリーについては、Azure Storage – #3 – Shared Image Gallery でより詳しく説明しています。

▼「Windows Virtual Desktopのディープな技術情報を解説」記事一覧
https://zine.qiita.com/tag/wvd/


イメージの最新バージョンから新規VMを生成する

共有イメージ ギャラリーの概要には共有イメージギャラリーに関するすべての項目があります。この中の「制限」を見てみましょう。

大規模なVMでは、1つの共有イメージギャラリーに1,000個のイメージを作成し、これら1,000個のイメージそれぞれに10,000個ずつのバージョンを作成し、さらにこれらのバージョンそれぞれに10個ずつのレプリカを作成することができます。
このように大規模な展開が可能なので、ギャラリーからシステムを展開するには従来と違う作業が必要です。

Windows 10マルチセッションイメージが作成されており、必要な設定が行われたイメージがキャプチャされ、クラウドに共有イメージギャラリーがある場合、このイメージを共有イメージギャラリーに取り込むと、そのイメージはイメージ定義になります。
その定義からバージョンを作成して、それぞれのバージョンにレプリカを作成できます。これらは特定の地域内に保存します。そこから複数の地域にスケールアウトすることもでき、同じイメージからWVDを世界のどこにでも簡単に展開できます。

イメージの管理と更新のプロセスを実行すれば、そのイメージの新しいバージョンが作成され、複製も同じように簡単にできます。
また、WVD管理ポータルでは、そのイメージの最新バージョンから新規VMを自動的に生成できます。

今回は、複数のアプリケーションやその他のシステム設定で構成したVMが用意しました。
※WVDのイメージ管理方法については、 Image Management | Windows Virtual Desktop – #03 をご覧ください。

 width=

まずは、これをキャプチャするためにSysprepプロセスを実行します。
同じVMのAzureポータルに戻って [Capture] に進み、イメージの名前をWVD-NewPortal-05に設定します。このようにすることで、このイメージが属するホストプールと作成された月がわかります。このイメージの格納先となるリソースグループを選択し、イメージの作成後にVMを自動的に削除するようにボックスをオンにしました。それでは [Create] をクリックします。

名前はtest-Image-1でイメージはあらかじめ選択されており、作成するサイズはB2msで、資格情報もすべて入力されています。ディスクは飛ばしてネットワークに進み、作成先はWVDネットワークにしてブート診断とともに該当するタグをすべて追加してから作成に進みます。
VMの作成が完了したら接続に進みましょう。

問題なくログインできて正しいVMに入っており、情報はすべて正しく、アプリも問題ないことを確認出来たらそのVMは破棄しても問題ありません。

新しいイメージ定義を作成する

共有イメージギャラリーを開いた際の最初のステップは、イメージを新しい定義ファイルとして追加することです。
この動画では米国東部に配置し、イメージの名前はWVD-Win10Multiと設定しています。これはWindowsイメージでGen 1のVM用で、すでに一般化され環境に応じたパブリッシャー、オファー、SKUがここで設定されています。

[Next] をクリックして、このイメージのバージョンを追加します。5月に作成された最初のイテレーションなので、名前は05.0.1とします。イメージのソースとして、先ほどキャプチャしたAzure VMイメージを選択し、これが最新から除外されないようにします。最新フィーチャーのフラグはこのプロセスを正しく機能させるために必要なものです。

このイメージバージョンの有効期限の終了日は7月1日に設定します。下にスクロールすると、ここで各種のレプリカ数を設定できます。レプリカの目的は、このイメージから生成できるVM数を増やして スケールアウトを可能にすることです。この機能では現在、1つのレプリカから一度に20台の仮想マシンを作成できます。一度に100台のVMを作成したい場合は5つのレプリカが必要ですが、この動画で必要なのは1つだけなので [Next] をクリックします。

下にスクロールして VM の展開に進むと、このイメージを展開する際の推奨事項が表示されます。これはこのワークロードのために用意すべきシステムリソースについての推奨事項です。今回使用可能にしたいのは、2個から64個までのCPUと8GBから2TBまでのRAMで、作成場所はプレミアムSSDです。このイメージ定義の有効期限の終了日は6月末に設定します。
[Next] を押してタグを追加し、[Review + create] ボタンを押します。すべて問題なさそうなので作成を実行します。

これで新しいイメージ定義が作成されました。

作成されたイメージ定義をクリックすると、作成時に設定した構成を確認でき、必要に応じて変更することもできます。また、イメージバージョンをクリックすると、そこから新規VMまたはVMスケール セットを作成できます。
[Update replication] に進み、ここでプライマリリージョンのレプリカ数を追加できます。また、複数の地域へのスケールアウトも可能ですが、レプリカの最大数は地域ごとに10個までです。

最初のVMを作成した後でイメージを変更することはできません。
WVD管理ポータルから既存のホストプールを選択し、セッションホストに進んで [Add] ボタンをクリックしても、このVMの生成元となったイメージのバージョンがロックされています。
イメージ変更するには一歩戻って新規ホストプールを作成する必要がありますが、初めに共有イメージギャラリーからホストプールを作成しておくことでこの作業が不要になります。

共有イメージギャラリーからホストプールを作成する

ここでは、NewPortalリソースグループに入れてこのホストプールの名前をSIG-HP-0にします。SIG は共有イメージギャラリーの頭文字です。このホストプールの種類はプール、最大セッション数は15ユーザー、幅優先モードを指定して、[Next] を押します。

VMを追加し、VMの作成場所はイメージがある場所を指定します。プレフィックスはSIG-WVDを指定して、2つのVMを作成し、下にスクロールします。
作成場所は既存のWVDネットワークにして、特定のOUに参加します。参加プロセスにはその OU に対する特定の委任を指定したADJoinアカウントを利用します。

上にスクロールしてイメージに戻ると、ギャラリーと ストレージblobの2つの選択肢があります。VHDがストレージアカウント内にあれば、そのイメージの正確なURLがわかるので参照できます。イメージを管理する方法としてお勧めするのは公式Azureイメージとして管理することです。つまり、このVHDファイルから新規VMを展開した後で先ほど行ったようにそれを正式なAzureイメージとしてキャプチャします。このようにする場合は、ギャラリーセクションを使用できます。
このギャラリードロップダウンにある3つのイメージは、Azureマーケットプレイスイメージに属するものであり、他のホストプールも同様に設定されていました。

カスタムイメージを参照するにはどうすれば良いでしょうか?

このリンクをクリックしてすべてのイメージをブラウズし、上の [My Items] を選択すると先ほどキャプチャしたイメージが表示されます。 [Shared Images] を選択すると、ここに共有イメージギャラリー内のイメージがあります。

[My Items]と [Shared Images] のイメージの違いは、[My Items]はAzureギャラリーイメージと同様に固定の静的バージョンであることです。
こちらを使う場合、プロビジョニングするセッションホストは常にイメージのそのバージョンから生成されます。少なくとも現在の仕様では、バージョンを更新することはできません。

[Shared Images]にはギャラリー内のイメージの使用に関連したフィーチャーフラグがあり、それによって常にイメージの最新バージョンを使うことが定められているため、ギャラリーのイメージに対する更新はすべてこのホストプールに反映されます。

これを大規模に展開したい場合は複数のAzure AD テナントにわたって実行することもできます。
大企業では多くのサブスクリプションを含む複数のAzure ADテナントを管理している場合がありますが、その全てに共有イメージ ギャラリーを展開することもできます。その方法についてはImage Management | Windows Virtual Desktop – #03 をご覧ください。

Win10Multiイメージを選択し、 [Next] をクリックしてこのイメージ用の新規ワークスペースを追加し、ワークスペースの名前は SIG-WVD-WS にして [Next] を押しタグをいくつか追加します。
タグはシステムに詳しい情報を追加して後で利用できるようにする手段です。例えば、コストを調べたり、複数のリソースグループやサブスクリプションにまたがって特定のアプリケーションを検索したりする際に使い、自動化のために使うこともできるので、タグは使うようにしてください。

[Review + create] ボタンを押し、問題なさそうなことを確認できたら [Create] を押しましょう。

これでセッションホストの作成が完了したのでログインすると、クライアントが開いてユーザーが表示されます。
そのデスクトップにログインすると、FSLogix により問題なくプロファイルが自動的にロードされています。

新規イメージバージョンを作成する

新規イメージ バージョンを作成したいので、アプリケーションをいくつかアンインストールしてみましょう。このようにすることで、このイメージが別のバージョンになることがわかりやすくなります。

WVDポータルからセッションホストに進むと、1番にアクティブセッションが存在していてユーザーがBlackAdamであることがわかります。彼にコンソールメッセージを送信し [OK] を押すと、すぐセッション内でポップアップが表示されてログアウトの時間になったことが伝えられますが、その前にポータルに戻って [Users] セクションに進み、「BlackAdam」と入力して、彼をクリックすると割り当てが表示されます。
また、 [Sessions] では彼がM1にログオンしていてID番号は2であることがわかります。

BlackAdamの既存セッションのシャドウを作成します。これはRDPツールの標準機能で /v を使用してターゲットにするシステムのIPアドレスまたはDNS名を指定し、shadowフラグとセッションIDを指定します。IDは先ほどWVD ポータルで確認したとおり2番です。グループ ポリシーの設定によっては、この操作を同意なしで行うことができます。

これでBlackAdamのシャドウセッションが見られるようになりました。何らかの種類のアプリケーションやコマンド プロンプトを開いていることなど、彼が何をしていても状況を把握できます。このようにユーザーの状況を監視できるようになるため、問題の診断に役立つほか、グループポリシーの設定によってはシステムの制御権を握ることも簡単にできます。

ここからシャドウイングしているシステムでは、ご覧のように実際にシステムの制御はできません。グループ ポリシーの設定によりますが、ウィンドウの動的サイズ変更はサポートされるので、ウィンドウをどれだけ大きくしても必要な内容はすべて見ることができます。この機能は無料で利用できます。

イメージバージョンを更新する

イメージバージョンを更新するには、再びsysprepを使ってキャプチャすることが必要です。これは C:\Windows\system32\sysprepフォルダーにあります。これを管理者として実行し、一般化とシャットダウンを行うように設定すれば設定は十分です。
そのプロセスはすぐに完了するので、続いて新規イメージとしてのキャプチャを行います。その仮想マシンに進んでこれをプールから取り除きましょう。

クリーンアップが済んだら仮想マシンに戻り、前にログインしていたVM1を選択して [Capture] ボタンを押します。
名前を付けてリソースグループに保存し、VMを自動的に削除するオプションのボックスをオンにします。今回はゾーン冗長イメージとして保存することにして [Create] を押します。

キャプチャ処理が完了したら、新規イメージバージョンを追加する準備ができます。イメージ定義をクリックしてから [Image versions] に進み、新規バージョンを追加します。イメージがある地域を選択し、これは05.0.2イメージにします。

続いて先ほど作成したAzure VMイメージを選択します。今回も最新から除外されないようにします。イメージの有効期限の終了日は8月に設定して、下にスクロールします。
現時点で必要なレプリカは1つだけで、ゾーン冗長に設定して[Next] を押します。既定の暗号化はそのままで問題ありません。[Next] を押してタグを追加してから、さらに [Next] を押すと新しいイメージバージョンが作成されます。

共有イメージギャラリーに戻ると、イメージ定義はまだ1つだけです。これをクリックしてから左側のバージョンに進むと、新しいバージョンが表示されています。

WVD管理ポータルに戻り、ホストプールに戻ってSIG-WVDをクリックして、セッションホストに進みます。
一番上の [Add] をクリックし、新規ホストを追加します。既存のプールに新規ホストを追加するので、これらの設定はすでに選択済みです。

[Next] を押して新規VMを1つプロビジョニングします。

ここでもイメージに関連した設定は変更できませんが、共有イメージギャラリーによりそのイメージの最新バージョンが取り込まれるのでこれでOKです。ここの残りの設定は,
以前の内容とまったく同じです。
[Next] をクリックしてタグを追加し、 [Review] ボタンを押して確認します。すべて問題ないことを確認できたら [Create] を押しましょう。

ホストプールに戻ると、2番目のセッションホストが登録されています。ログオンしているマシンが正しいことを確認するために、0マシンのドレインモードをオンに変更します。WVDクライアントを再び開いて、今回はユーザーNovaでログインしています。SIG VMを起動するとここにサインインの詳細が表示されます。
SIG-WVD-1 VMにログオンしていてプログラムの追加/削除の項目に該当するアプリがすべて表示されているので、イメージの最新バージョンを使用していることは確実です。


共有イメージ ギャラリーを使ってイメージの最新バージョンでホストプールを自動的に更新する方法を簡単に説明したこの動画をお楽しみいただけたでしょうか。イメージの管理だけでなくWVDインスタンスのスケーリングにも必ず役立つ手段です。リージョンごとのインスタンス数を増やす場合も複数の地域にスケールアウトする場合も使えます。

【新規ユーザーさま向け】Windows Virtual Desktop
30%オフキャンペーン実施中!

はじめてWindows Virtual Desktop(ネイティブ版)をご利用いただいた方を対象に、最大90日間コストを30%オフでご利用いただけるキャンペーンを実施中です。
この機会にぜひご利用ください。

対象期間 : 2021年6月30日まで

詳細はこちら

関連記事