VM ロールで仮想デスクトップ
    環境を作ってみよう


            小澤 真之
  (@Masayuki_Ozawa)
自己紹介
• 名前
 – 小澤 真之


• 参加コミュニティ
 – JAZUG / SQLTO に参加させていただいています


• お仕事
 – 都内の SIer で主に Microsoft 製品の社内支援を
   しています

                                     2
VM ロールをサーバー用途以外でも使えないか?

 Azure はインターネットにつながれば
   どこからでも利用することが可能


VM ロールは OS のイメージを自分で準備
できるためカスタマイズ可能な範囲が広い

• この 2 つを組み合わせて、どこからでも利用で
  きる仮想デスクトップ環境 (ぽいもの) を作れな
  いか試してみました

                             3
今回試したのはこの 2 つ
特定のアプリケーションだけをクライアントで使用

• デスクトップ全体ではなく VM ロール上にインス
トールした特定のアプリケーションだけをクライア
ントに表示


ユーザープロファイルを永続化

• インスタンスの初期化が発生しても消えない
My documents や お気に入り


                             4
このような環境になっています
               Azure              ①インスタンス起動時に
                                 Azure ドライブをマウント
               VM ロール                      Azureドライブ
                         リモート
                        デスクトップ
                       接続用ユーザー



③VM ロールで起動した
IE だけをリダイレクト



                               ②リモートデスクトップ用
                             ユーザーのプロファイルのパスを
                                Azure ドライブに指定
                             (ユーザープロファイルの永続化)

               インターネット
                 接続環境
                                                       5
①インスタンス起動時に Azure Drive をマウント


  VM ロールではスタートアップタスクがない

• インスタンス起動時に実行したい処理は VM ロールアダプターで
 実装


  VM ロールアダプターってなにもの??

• Windows Azure API を使用してWindows Azure のランタイム
 情報を使用する Windows サービス

• と書きましたが作成方法は通常の Windows サービスと同じ
 • PowerShell + タスクスケジューラーで代替することも



                                                6
①インスタンス起動時に Azure Drive をマウント


         VM ロールアダプターとして作成したサービス
            インスタンス起動時に自動実行される




    マウントされた
     Azure Drive




                                  7
②プロファイルのパスに Azure ドライブ を指定

• リモートデスクトップのユーザーの移動ユーザープロ
  ファイルのパスにAzure ドライブを設定
 – VM ロールアダプター内に処理を組み込めると思いますが、
   今回はイメージアップロード前に手動でプロファイルのパ
   スを設定しています
        プロファイルのパスに
        Azure Drive を指定




     Azure ドライブ上に保存された
       移動ユーザープロファイル
   (ログオン/ログオフ時に同期される)




                                  8
③VM ロールで起動した IE をリダイレクト

 • Remote Desktop で Remote App の機能を使用
     – 以下のレジストリを変更することでリモートデスクトップ
       接続先の特定のアプリケーションだけをリダイレクト可能
         • HKLM¥SOFTWARE¥Microsoft¥Windows
           NT¥CurrentVersion¥Terminal Server¥TsAppAllowList
         • fDisabledAllowList (REG_DWORD) : 1
     – 特定のアプリケーションに限定してリダイレクトを許可す
       ることも可能

 • 管理ポータルからダウンロードした RDP ファイルを
   修正し、起動したいアプリケーションの情報を設定す
   ることでアプリケーションの画面だけ表示可能
- 以下の記述を追加 -
remoteapplicationmode:i:1
remoteapplicationname:s:Internet Explorer
remoteapplicationprogram:s:C:¥Program Files¥Internet Explorer¥iexplore.exe
                                                                         9
他にもこんなことができます
• リモート オーディオでインスタンス上で再
  生した音声をクライアントにリダイレクト
 – 動画の再生は厳しいですが音声だけであれば聞く
   ことが可能なレベル


 VM ロールはカスタマイズ可能な範囲が
     広いので可能性がいろいろ。
  なにか面白い使い方がありましたら、
      ぜひぜひ教えてください!!

                            10
参考


     11
参考)VM ロール アダプターの作り方

• MSDN ≫ Windows Azure の VM ロールのアダプター
  の開発方法
  – http://msdn.microsoft.com/ja-jp/library/gg466226.aspx
  ※ [アダプターのインストーラーを作成するには] の [Account プロパ
    ティ] は [Local System] を設定しないとうまく動きませんでした


• 64 Blog ≫ VMロール アダプターでドライブレター固定
  のWindows Azureドライブをマウントする
  – http://blogs.gine.jp/kusa/archives/1575




                                                            12
参考)sysprep 時の注意事項
• SID は要注意
  – Generalize (一般化) したイメージだとローカルに作成したリ
    モートデスクトップ用ユーザーの SID (セキュリティ識別子)
    が初期化のたびに変更され、初期化後は Azure Drive 上のユー
    ザープロファイルが読めなくなります (同姓同名の他人となっ
    てしまうため)
  – 今回は Generalize しないイメージを使用していますがサポート
    対象外になるかもしれないので自己責任で…

• Azure Connect でドメイン参加させ、リモートデスクトップ
  の接続にはドメインユーザーを使用するのが良いかもしれま
  せん
  – ドメインユーザーは初期化後も SID 変更の影響なしなので
    Generalize 可能
       • ユーザー情報は Active Directory に保存されているため
  –   参考) ロールがドメインに結合されている場合の Windows Azure Connect の概要
       •   http://msdn.microsoft.com/ja-jp/library/gg454720.aspx




                                                                   13
参考)アプリケーションだけをリダイレクトする

- レジストリをコマンドで変更 -
reg add "HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Terminal
Server¥TsAppAllowList" /v fDisabledAllowList /t REG_DWORD /d 1 /f



- RDP ファイルの修正例 -
full address:s:xxxxxxx.cloudapp.net
username:s:xxxxxx
LoadBalanceInfo:s:Cookie: mstshash=xxxxx#xxxxx_IN_0
remoteapplicationmode:i:1
remoteapplicationname:s:Internet Explorer
remoteapplicationprogram:s:C:¥Program Files¥Internet
Explorer¥iexplore.exe




                                                                      14
参考)オーディオをリダイレクト
• [Start] → [Administrative Tools] → [Remote Desktop
  Services] → [Remote Desktop Session Host Configuration] を
  実行して、[RDP-Tcp] のプロパティを開く
• [Audio and video playback][Audio recording] のチェックを外す




                                    チェックを外す




                                                              15

VM ロールで仮想デスクトップ環を作ってみよう

  • 1.
    VM ロールで仮想デスクトップ 環境を作ってみよう 小澤 真之 (@Masayuki_Ozawa)
  • 2.
    自己紹介 • 名前 –小澤 真之 • 参加コミュニティ – JAZUG / SQLTO に参加させていただいています • お仕事 – 都内の SIer で主に Microsoft 製品の社内支援を しています 2
  • 3.
    VM ロールをサーバー用途以外でも使えないか? Azureはインターネットにつながれば どこからでも利用することが可能 VM ロールは OS のイメージを自分で準備 できるためカスタマイズ可能な範囲が広い • この 2 つを組み合わせて、どこからでも利用で きる仮想デスクトップ環境 (ぽいもの) を作れな いか試してみました 3
  • 4.
    今回試したのはこの 2 つ 特定のアプリケーションだけをクライアントで使用 •デスクトップ全体ではなく VM ロール上にインス トールした特定のアプリケーションだけをクライア ントに表示 ユーザープロファイルを永続化 • インスタンスの初期化が発生しても消えない My documents や お気に入り 4
  • 5.
    このような環境になっています Azure ①インスタンス起動時に Azure ドライブをマウント VM ロール Azureドライブ リモート デスクトップ 接続用ユーザー ③VM ロールで起動した IE だけをリダイレクト ②リモートデスクトップ用 ユーザーのプロファイルのパスを Azure ドライブに指定 (ユーザープロファイルの永続化) インターネット 接続環境 5
  • 6.
    ①インスタンス起動時に Azure Driveをマウント VM ロールではスタートアップタスクがない • インスタンス起動時に実行したい処理は VM ロールアダプターで 実装 VM ロールアダプターってなにもの?? • Windows Azure API を使用してWindows Azure のランタイム 情報を使用する Windows サービス • と書きましたが作成方法は通常の Windows サービスと同じ • PowerShell + タスクスケジューラーで代替することも 6
  • 7.
    ①インスタンス起動時に Azure Driveをマウント VM ロールアダプターとして作成したサービス インスタンス起動時に自動実行される マウントされた Azure Drive 7
  • 8.
    ②プロファイルのパスに Azure ドライブを指定 • リモートデスクトップのユーザーの移動ユーザープロ ファイルのパスにAzure ドライブを設定 – VM ロールアダプター内に処理を組み込めると思いますが、 今回はイメージアップロード前に手動でプロファイルのパ スを設定しています プロファイルのパスに Azure Drive を指定 Azure ドライブ上に保存された 移動ユーザープロファイル (ログオン/ログオフ時に同期される) 8
  • 9.
    ③VM ロールで起動した IEをリダイレクト • Remote Desktop で Remote App の機能を使用 – 以下のレジストリを変更することでリモートデスクトップ 接続先の特定のアプリケーションだけをリダイレクト可能 • HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Terminal Server¥TsAppAllowList • fDisabledAllowList (REG_DWORD) : 1 – 特定のアプリケーションに限定してリダイレクトを許可す ることも可能 • 管理ポータルからダウンロードした RDP ファイルを 修正し、起動したいアプリケーションの情報を設定す ることでアプリケーションの画面だけ表示可能 - 以下の記述を追加 - remoteapplicationmode:i:1 remoteapplicationname:s:Internet Explorer remoteapplicationprogram:s:C:¥Program Files¥Internet Explorer¥iexplore.exe 9
  • 10.
    他にもこんなことができます • リモート オーディオでインスタンス上で再 生した音声をクライアントにリダイレクト – 動画の再生は厳しいですが音声だけであれば聞く ことが可能なレベル VM ロールはカスタマイズ可能な範囲が 広いので可能性がいろいろ。 なにか面白い使い方がありましたら、 ぜひぜひ教えてください!! 10
  • 11.
  • 12.
    参考)VM ロール アダプターの作り方 •MSDN ≫ Windows Azure の VM ロールのアダプター の開発方法 – http://msdn.microsoft.com/ja-jp/library/gg466226.aspx ※ [アダプターのインストーラーを作成するには] の [Account プロパ ティ] は [Local System] を設定しないとうまく動きませんでした • 64 Blog ≫ VMロール アダプターでドライブレター固定 のWindows Azureドライブをマウントする – http://blogs.gine.jp/kusa/archives/1575 12
  • 13.
    参考)sysprep 時の注意事項 • SIDは要注意 – Generalize (一般化) したイメージだとローカルに作成したリ モートデスクトップ用ユーザーの SID (セキュリティ識別子) が初期化のたびに変更され、初期化後は Azure Drive 上のユー ザープロファイルが読めなくなります (同姓同名の他人となっ てしまうため) – 今回は Generalize しないイメージを使用していますがサポート 対象外になるかもしれないので自己責任で… • Azure Connect でドメイン参加させ、リモートデスクトップ の接続にはドメインユーザーを使用するのが良いかもしれま せん – ドメインユーザーは初期化後も SID 変更の影響なしなので Generalize 可能 • ユーザー情報は Active Directory に保存されているため – 参考) ロールがドメインに結合されている場合の Windows Azure Connect の概要 • http://msdn.microsoft.com/ja-jp/library/gg454720.aspx 13
  • 14.
    参考)アプリケーションだけをリダイレクトする - レジストリをコマンドで変更 - regadd "HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Terminal Server¥TsAppAllowList" /v fDisabledAllowList /t REG_DWORD /d 1 /f - RDP ファイルの修正例 - full address:s:xxxxxxx.cloudapp.net username:s:xxxxxx LoadBalanceInfo:s:Cookie: mstshash=xxxxx#xxxxx_IN_0 remoteapplicationmode:i:1 remoteapplicationname:s:Internet Explorer remoteapplicationprogram:s:C:¥Program Files¥Internet Explorer¥iexplore.exe 14
  • 15.
    参考)オーディオをリダイレクト • [Start] →[Administrative Tools] → [Remote Desktop Services] → [Remote Desktop Session Host Configuration] を 実行して、[RDP-Tcp] のプロパティを開く • [Audio and video playback][Audio recording] のチェックを外す チェックを外す 15