VMware Horizon Cloud on Microsoft Azure環境でのUiPath製品の利用について

vmware-horizon-cloud-on-microsoft-azure

はじめに

本記事では、VMware Horizon Cloud on Microsoft Azure 環境でのUiPath Studio/Robotの利用について説明いたします。 この記事は2020年3月時点での情報を元に記述しております。またUiPath Studio/Robot v2019.10.4での情報を元に記述しているため、将来のバージョンアップにより動作が異なる可能性があります。あらかじめご了承ください。 またAzure環境におけるWindowsライセンスにつきましては日本マイクロソフト社およびヴイエムウェア社にご確認ください。UiPath社は技術的観点からUiPath製品の利用に関して記述しておりますが、Azure環境におけるWindowsライセンスを保証するものではありません。

背景

2020年1月にWindows 7のサポート終了を迎えたため、クライアントPCのWindows 10への移行が活発化しています。 オペレーティングシステムの移行を機に、従来のデスクトップPCまたはノートPC、いわゆる物理端末から仮想デスクトップ(VDI: Virtual Desktop Infrastructure)への移行を検討されているケースも良く耳にします。

2014年4月にWindows XPのサポートが終了した時には、オンプレミス環境の仮想デスクトップへ移行を行った事例が多くありましたが、今回のOS移行ではクラウド環境のVDIサービスに移行するという選択肢もあります。 クラウドでRPA開発環境および実行環境で実現できるのでしょうか?物理端末やオンプレミス環境と比較してどのようなメリット、デメリットがあるでしょうか?

UiPath Japanではヴイエムウェア社のご協力のもと VMware Horizon Cloud on Microsoft Azure 環境にて UiPath Studio/Robot の動作検証を行い、本記事ではその検証結果および考慮点についてまとめております。

 

VMware Horizon® Cloud on Microsoft Azure概要

Microsoft Azure は、Microsoft が提供するIaaS (Infrastructure-as-a-Service)です。そのMicrosoft Azure上で、ヴイエムウェアがオンプレミス製品である VMware Horizon で培ってきた仮想デスクトップ・仮想アプリケーションのテクノロジーを利用できるクラウドサービスが VMware Horizon® Cloud on Microsoft Azure になります。

vmware-horizon-cloud-on-microsoft-azure

VMware Horizon® Cloud on Microsoft Azure の特徴

VMware Horizon Cloudと Microsoft Azure の連携により、以下を実現しています。

・導入の簡素化 

VMware Horizon Cloudの管理コンポーネントの導入はすべて自動化されています。さらに Microsoft Azure Marketplaceとの統合により、Windows OS イメージに対するエージェントのインストールの自動化も実現しています。また、面倒な導入作業や更新作業をブラウザ操作だけで実現できます。

・グローバル展開

Microsoftが全世界で展開する40以上のデータセンターリージョンを活用可能です。ユーザにもっとも近いデータセンターを利用することで、ユーザエクスペリエンスを最大化します。

・Microsoft Azureキャパシティを時間単位の課金で利用

使用量ベースで課金されるパブリックIaaSと、VMware Horizon Cloudのサービスサブスクリプションを組み合わせて利用することで、使用量に応じた課金体系を実現しています。

・優れたアーキテクチャ

デスクトップ環境を管理するクラウド制御プレーンは、ユーザのMicrosoft Azure環境から分離されています。そのため、制御プレーンがダウンしてもユーザの仮想デスクトップ利用には影響しません。ビジネスの継続性を重視したアーキテクチャとなっています。

vmware-horizon-cloud-on-microsoft-azure

デスクトップタイプに合わせたUiPath製品の展開方針

VMware Horizon Cloud on Microsoft Azure でプロビジョニング可能なデスクトップタイプは3つあり、それぞれの特徴は下記の通りです。

・専用デスクトップ (Dedicated) 

【ユーザー割り当て: 固定、パーシステンス: 有り】

Windows 10のマスターイメージを元に仮想デスクトップのインスタンスを個別にフルクローンにて作成し、ユーザーと一対一で静的に割り当てをします。

デスクトップごとにアプリケーションをインストールし、カスタマイズすることが可能になるというメリットがある一方、Windows Updateなどのパッチ適用などのメンテナンスは個別に行う必要があります。

・フローティングデスクトップ (Floating)

【ユーザー割り当て: ランダム、パーシステンス: 無し】

各仮想デスクトップのインスタンスは共通のWindows 10のマスターイメージから一対多で作成し、ユーザーには多対多で動的に割り当てられます。 OSパッチ適用などは一つのマスターイメージに対して行うためメンテナンスがしやすいというメリットがある一方、ユーザーが仮想デスクトップ上で行った変更はログアウト時にすべてリセットされます。データを保持するため、マスターイメージと移動プロファイルなどの設計が重要となります。

 ・セッションデスクトップ (Session)

【ユーザー割り当て: ランダム、パーシステンス: 有り】

Windows Serverのマスターイメージを元にRDSH(リモートデスクトップセッションホスト)の機能を利用して、複数ユーザーが1台のサーバーに同時アクセスします。 仮想デスクトップの台数を集約してコストを削減できるメリットがある一方、複数ユーザーによるアプリケーションの利用状況によってはサーバーに負荷がかかり、パフォーマンスが低下する可能性があります。またセッションデスクトップ上で利用するアプリケーションはサーバーOSおよびマルチユーザーに対応している必要があります。

 

各デスクトップタイプにおいてUiPath製品の対応状況は下記表の通りです。

vmware-horizon-cloud-on-microsoft-azure

* セッションデスクトップは複数インスタンスでの構成を想定しています。

 

環境別考慮点 - 専用デスクトップ

注意すべき点は特にありません。一般的な物理マシンや仮想マシンと同様に、UiPath Studio/Robotを使用することができます。

 

環境別考慮点 - フローティングデスクトップ

フローティングデスクトップにはパーシステンス(データ保持機能)がありません。つまりユーザーがログアウトすると今まで行った変更はすべてリセットされます。 そのため下記の点を考慮する必要があります。

  • マシンごとに保持すべきUiPath Studio/Robotの設定などはあらかじめマスターイメージ上で設定しておく。

  • UiPath Studio/Robotが出力するファイルは、ファイルサーバーにマシンごとに保持する領域を確保し、設定ファイルで出力先を変更しておく。

  • ユーザーごとに保持すべき設定や出力するファイルは、移動プロファイルで適切に同期されるようにグループポリシーなどでチューニングする。

具体的には下記の設定を行います。大まかにはマスターイメージ上で行うマシン設定と、グループポリシーなどによるユーザー設定をそれぞれ行います。ファイルパスなどは環境に応じて変更してください。

マスターイメージにおけるマシン設定

M-1: Orchestratorとの接続設定

Orchestratorと接続する場合は、UiPathのフローティングロボットを使用して Attended Robot または Studio として利用することが可能です。 Unattended Robotは、マシンキー保持のためパーシステンスが必要となるため、専用デスクトップを利用します。

Orchestratorと接続するには下記の手順を実行します。

  • Orchestrator管理コンソールにて、マシンテンプレートを作成して、マシンキーを作成します。

  • マスターイメージ上でRobotトレイからOrchestrator設定画面を起動し、Orchestrator URLとマシンキーを入力し、Orchestratorと接続します。

  • Orchestrator管理コンソールにて、フローティングデスクトップとしてログインするユーザーに応じてフローティングロボットを作成します。

M-2: アクティベーション情報の保持

Orchestratorと接続しない場合、UiPath Studio/Robotのアクティベーション情報はローカルディスクに保存されますが、フローティングデスクトップではログアウト時にこの情報がリセットされます。このためUiPath Studio/Robotを起動するたびにアクティベーションが求められるこ可能性があります。 この問題を回避するには、次の手順により永続的なディスク上にアクティベーション情報を保持するように設定変更します。対応手順は UiPath Studio / Robot のバージョンとライセンスの種類により異なります。

  • UiPath Studio/Robot v2018.4.7以降、v2019.4.5以降、v2019.10.1以降 (新ライセンスサーバー使用)

  • Named User の場合、%AppData%\UiPath\LicenseInternal にアクティベーション情報 (license.dat) が保存されます。 このディレクトリおよびファイルは移動プロファイル環境下であれば自動的に同期されるため、初回起動時のみアクティベーションが求められますが、2回目以降は別マシンの仮想デスクトップにログオンした場合でも再アクティベーションする必要はありません。 移動プロファイルを使用していない環境は、初回アクティベーション後、ファイルサーバーにユーザーごとに license.dat を保存し、ログオンスクリプトなどでファイルサーバーから %AppData%\UiPath\LicenseInternal に license.dat をコピーする実装が必要となります。

  • Node Locked の場合、%ProgramData%\UiPath\LicenseInternal にアクティベーション情報 (license.dat) が保存されます。 パーシステンス無しの環境では license.dat が保持されないため、初回アクティベーション後、ファイルサーバーにマシンごとに license.dat を保存し、スタートアップスクリプトなどでファイルサーバーから %ProgramData%\UiPath\LicenseInternal に license.dat をコピーする実装が必要となります。

  • UiPath Studio/Robot v2018.3以前、v2018.4.1~v2018.4.6、v2019.4.1~v2019.4.4 (旧ライセンスサーバー使用)・マスターイメージ上でlicense.configを下記の通り変更し、ファイルサーバー側でStudio実行ユーザーおよび仮想デスクトップのコンピューターアカウントに対して共有変更権限を付与します。

license.config 設定例

<WorkDir>\\fileserver\UiPath\License\%ComputerName%</WorkDir> <LicDir>\\fileserver\UiPath\License\%ComputerName%</LicDir>

Studioユーザーの権限付与例

vmware-horizon-cloud-on-microsoft-azure

コンピューターアカウントの権限付与例

vmware-horizon-cloud-on-microsoft-azure

* コンピューターアカウントを含めるには「ユーザー、コンピューター、サービスアカウントまたはグループの選択」ダイアログで [オブジェクトの種類] をクリックし、コンピューターオブジェクトをオンにします。

 

M-3: NuGetパッケージのデフォルトパブリッシュ先の変更

Orchestratorと接続しない場合、NuGetパッケージのデフォルトパブリッシュ先は C:\ProgramData\UiPath\Packages となりますので、ファイルサーバーでマシンごとにパッケージを保持するようにパブリッシュ先を変更します。

マスターイメージ上で C:\ProgramData\UiPath\UiPath.settings を環境に応じて下記のように編集します。 ファイル変更が拒否される場合は、ファイルを一旦デスクトップなどに保存して編集し、元のディレクトリにコピーし直します。

 

UiPath.settings 設定例

"NuGetServerUrl": "\\\\fileserver\\UiPath\\Package\\%ComputerName%"

ファイルサーバー側ではStudio実行ユーザーとコンピューターアカウントの共有変更権限付与が必要となります。(設定手順はM-2を参照してください)

 

M-4: その他のUiPath Studio/Robotマシン設定

UiPath Studio/Robotで実行ログの出力方法やプロキシサーバーなどマシン設定を行うには、マスターイメージで下記の設定ファイルを変更します。変更手順については各ドキュメントを参照してください。 (ファイルパスは64bit OSの場合で記述しております)

vmware-horizon-cloud-on-microsoft-azure

M-5: 拡張機能の有効化 (マシン単位)

UiPath拡張機能はマシン単位で設定するものとユーザー単位で設定するものに分類されます。 マシン単位で設定が必要な下記の拡張機能は、あらかじめマスターイメージ上で有効にします。設定手順は各ドキュメントを参照してください。

グループポリシーなどによるユーザー設定

U-1: AppData\Local\UiPath ディレクトリの同期

UiPath Studio/Robotは下記のように %UserProfile%\AppData\Local\UiPath 配下にユーザーごとの設定ファイルや実行ログを入出力します。

  • Studio設定ファイル: %UserProfile%\AppData\Local\UiPath\UiStudio.v2.settings

  • Robot実行ログ: %UserProfile%\AppData\Local\UiPath\Logs\*.log

%UserProfile%\AppData\Local はデフォルトでは移動プロファイルで同期されません。 移動プロファイルで同期除外されるディレクトリをカスタマイズするには下記レジストリキーを変更します。 このレジストリキーは除外設定しかできないため、AppData\Local配下のサブディレクトリのうち "UiPath" 以外のものを列挙します。

Windows 10のデフォルト状態での設定例を示します。アプリケーションのインストール状況などに応じて適宜変更してください。

 

レジストリ設定例

[HKEYCURRENTUSER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] "ExcludeProfileDirs"="AppData\Local\Comms;AppData\Local\ConnectedDevicesPlatform;AppData\Local\DBG;AppData\Local\GroupPolicy;AppData\Local\Microsoft;AppData\Local\MicrosoftEdge;AppData\Local\Packages;AppData\Local\Temp;AppData\Local\VirtualStore;AppData\Local\VMware;AppData\LocalLow;$Recycle.Bin;OneDrive;Work Folders"

 

グループポリシーの基本設定(GPP)を使用して一括設定するには、次の手順を実行します。

  • 移動プロファイルユーザーに適用するGPOを編集または新規作成します。

  • ユーザーの構成 > 基本設定 > Windowsの設定 > レジストリ (右クリック) > 新規作成 > レジストリ項目 をクリックし、新規レジストリ項目を下記のように作成します。

アクション: 更新

ハイブ: HKEY_CURRENT_USER

キーのパス: Software\Microsoft\Windows NT\CurrentVersion\Winlogon

値の名前: ExcludeProfileDirs

値の種類: REG_SZ

値のデータ (環境に応じて適宜変更します): AppData\Local\Comms;AppData\Local\ConnectedDevicesPlatform;AppData\Local\DBG;AppData\Local\GroupPolicy;AppData\Local\Microsoft;AppData\Local\MicrosoftEdge;AppData\Local\Packages;AppData\Local\Temp;AppData\Local\VirtualStore;AppData\Local\VMware;AppData\LocalLow;$Recycle.Bin;OneDrive;Work Folders 

vmware-horizon-cloud-on-microsoft-azure

  • 作成したGPOを移動プロファイルユーザーに適用します。

レジストリキー変更の代わりに VMware User Environment Manager (UEM) を使用して AppData\Local\UiPath の同期を行うことも可能です。UEMの設定は次の手順を実行します。

  • VMware UEM Management Consoleを起動し、[Create Config File] にて custom config fileを作成します。

  • General > Windows Settings 配下に "UiPath" という名前でconfigを作成し、 [Import/Export] タブにて次の設定を記述し、保存します。

UEM Config

[IncludeFolderTrees]

<LocalAppData>\UiPath

vmware-horizon-cloud-on-microsoft-azure

VMware UEM の詳細については次のサイトもご参照ください。

UEM 概要 - https://www.vmware.com/jp/products/user-environment-manager.html UEM 管理者ガイド (英語のみ) - https://docs.vmware.com/en/VMware-User-Environment-Manager/

U-2: NuGetキャッシュの移動プロファイル同期除外

移動プロファイル環境では、プロセス実行時にエラーが発生する既知問題があります。

この問題を回避するには、下記ナレッジベースを参照して、 .nuget ディレクトリを移動プロファイルから同期除外する必要があります。 https://www.uipath.com/ja/resources/knowledge-base/about-roaming-user-profile-error

U-3: 拡張機能の有効化 (ユーザー単位)

ユーザー単位で設定する拡張機能は下記の通りです。

Chrome拡張機能

https://docs.uipath.com/studio/lang-ja/docs/extension-for-chrome

Chrome拡張機能は %UserProfile%\AppData\Local\Google 配下のサブディレクトリに格納されるため、ExcludeProfileDirs レジストリキーでこのパスが移動プロファイルで同期除外されないように設定する必要があります。

Firefox拡張機能

https://docs.uipath.com/studio/lang-ja/docs/extension-for-firefox

Firefox拡張機能は %UserProfile%\AppData\Roaming\Mozilla 配下のサブディレクトリに格納され、移動プロファイルで同期されるため、ExcludeProfileDirs レジストリキーの設定は必要ありません。

環境別考慮点 - セッションデスクトップ

セッションデスクトップの設定は、フローティングデスクトップでの設定とほぼ同様ですが、異なる部分について説明します。

 

M-1: Orchestratorとの接続設定

セッションデスクトップはマシンごとにパーシステンスがあるため、Unattended Robotとして利用することが可能です。 Unattended Robotとして利用する場合は、フローティングロボットではなく標準ロボットとして構成します。そのためマシンキーはマシンテンプレートではなく個別のマシンごとに作成します。 また高密度ロボットとして構成する必要があるため、下記ドキュメントの通り設定を行います。

https://docs.uipath.com/robot/lang-ja/docs/setting-up-windows-server-for-high-density-robots

 

その他の設定項目

下記の設定項目についてはフローティングデスクトップのセクションをご参照ください。

M-2: アクティベーション情報の保存先変更 M-3: NuGetパッケージのデフォルトパブリッシュ先の変更 M-4: その他のUiPath Studio/Robotマシン設定 M-5: 拡張機能の有効化 (マシン単位) U-1: AppData\Local\UiPath ディレクトリの同期 U-2: NuGetキャッシュの移動プロファイル同期除外 U-3: 拡張機能の有効化 (ユーザー単位)

 

オンプレミス版 VMware Horizon 環境の対応について

ここまで VMware Horizon Cloud on Microsoft Azure について述べてきましたが、オンプレミス版 VMware Horizon 環境でも同様にデスクトップタイプに合わせてUiPath製品を展開することが可能です。 本記事では一般的な設定について説明しましたが、詳細についてはお客様の環境に応じて適宜変更・検証していただくことを推奨いたします。

Topics:

RPA
Avatar Placeholder Big
Hideaki Fujiwara

Senior Solution Architect, UiPath