8
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

UiPath製品群をプロキシ環境で使用するための環境設定手順(UiPath Enterprise版/認証なしプロキシのケース)

さて今回は、地味だけどUiPathの導入で結構つまずくというか障壁になることが多い、プロキシ接続設定の話。ぼんやり手元に情報はあったのですが、あらためて網羅的に整理してみました。

イントロ

UiPath StudioやRobotですが、気づかないところで結構インターネットに接続しています。たとえば

  • UiPath StudioやRobotがアクティビティパッケージをダウンロードするとき
  • タスクトレイの(正確にはWindowsサービス) のダイアログからのUiPath Orchestrator(以下OC)との接続・切断
  • OCと接続しているロボットが「じぶんは生きてるよ」っていうOCへの通信(Heartbeat)
  • StudioからワークフローをOCへパブリッシュするとき

などなどです。

例:OCへの「接続」を押したとき
00.png

例:Studioからのパブリッシュをしたとき。
01.png

ところで、仕事でつかうPCはインターネットに接続する際プロキシサーバを経由するのがわりと一般的ですよね。なのでUiPathの製品群も、そのような環境ではプロキシサーバの設定が必要だったりします。

今回は UiPathを使っていて、上記のようにUiPath本体がネット接続する場合のプロキシサーバの設定方法を整理します。

この記事の対象の方

  • 企業でUiPathやUiPath Orchestratorを導入しようとしていて、自社の環境に導入できるかな?ってきになる方。
  • トラブルシューティングなどで、Studio/Robot とOC間の電文をしっかりと確認したい方。
  • UiPath Loveな方:-)

前提

  • UiPath Studio 2019.10.2 Enterprise 版/Orchestrator 2019.10.15 で確認を行いました。 (したがってRobotはユーザモードではなく、Windowsサービスとして起動しています)
  • 少なくとも今回の記事では「認証あり」のプロキシについては言及せず、認証なしプロキシの話をします1
  • 今回の疎通確認においてプロキシサーバは、接続できていることが目視で確認できる Fiddlerを用いています。
  • その Fiddlerがhttp://127.0.0.1:8888で起動していると仮定します。

Fiddlerというプロキシサーバ経由で、UiPath Studioがアクティビティパッケージをダウンロードしている図
Fiddler.png

TL;DR

  • 大半は「IEの設定」をそのまま引き継ぐようになっているので、設定しなくてもネット接続は可能でした。
  • 「OCへの接続/切断 関連」や「Robotのアクティビティパッケージ(nupkg)のダウンロード」「OCへのパブリッシュ」は、デフォルトではIEの設定を引き継がないでダイレクトにネット接続しようとするので、それらの設定変更は必要。そして、その設定ファイルの編集は管理者権限が必要。

TL;DR(補足)

あ、ちなみに「IEの設定」というのは、いわゆる「インターネットのプロパティ」のことです。
02.png

すでにプロキシサーバが導入されていれば、ココにプロキシ設定がされているはずです。UiPath製品群も基本はこの設定を使いますが、OCへの接続・切断など一部の処理は例外ってコトですね。

さて、それら例外たちをプロキシ経由にするには、下記ファイルを編集します2

  • C:\Program Files (x86)\UiPath\Studio\UiPath.Service.Host.exe.config
  • C:\Windows\SysWOW64\config\systemprofile\AppData\Roaming\NuGet\NuGet.Config

あ、環境によるかもしれませんがこのファイルを直接ひらいて修正・保存すると、WindowsのVirtualStoreという仕組みにより他のパスC:\Users\[ユーザ名]\AppData\Local\VirtualStore\Program Files (x86)\UiPath\.. に保存されたりしてよけいなトラブルに巻き込まれますので、別のフォルダで編集・保存した後エクスプローラでコピー・上書きするようにしてください。

2019/12/24追記:
NuGet.Config はココのほかにC:\Program Files (x86)\UiPath\Studio\とかC:\Users\[ユーザ名]\AppData\Roaming\NuGet\ にもあったりするようです。。今回は文中のファイルの修正が必要でしたが、挙動が異なる場合は他のファイルも試してみてください。

さて、それぞれの記述方法は以下の通り。
まずは UiPath.Service.Host.exe.config から。

UiPath.Service.Host.exe.config
...割愛。
  <!--Proxy configuration-->
  <!--
  <system.net>
    <defaultProxy>
      <proxy
        usesystemdefault="true"
        proxyaddress="http://proxy_server:proxy_port"
        bypassonlocal="true"
      />
    </defaultProxy>
  </system.net>
  -->

これらのコメントアウト<!-- -->をはずしproxyaddress="http://proxy_server:proxy_port"を今回はproxyaddress="http://127.0.0.1:8888" と変更します。

つぎにNuGet.Config について。コレはファイル自体が存在しない場合もあるようで(いちどもnupkgを取りにいってないなど)、なかったら適宜つくればよいようです。

NuGet.Config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="http_proxy" value="http://127.0.0.1:8888" /> 
</config>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </packageSources>
</configuration>

<config>...</config> を追加しました。

最後にWindowsのサービス(Win+R で services.msc で起動できる)から、UiPath Robot サービスを再起動しておきます。
image.png

「認証なしプロキシを越えられればイイや」であれば、以上で終了です。おつかれさまでした。

詳細。

わたくしすぐ忘れてしまうので、もうすこし詳細を記載します。

認証なしのプロキシの場合は以上でよいのですが、認証ありプロキシの場合は、IEの設定をそのまま引き継いでも、プロキシ認証のためのID/Passを入れる場面がないので、結局あとでつまづくことになりそうです。

認証ありプロキシの話しはあらためて記事化しますが、今後のためIEの設定を利用するケースでも、明示的にプロキシ設定できるやり方を整理しておきます。

登場するプログラムたち

さてさて単にネットに接続するといってもケースによって挙動が違うのは、ウラで動いているプログラムたちが異なっているからです。そしてそれらがそれぞれ設定ファイルを持っています。

UiPathはプロセスを整理するとおおむね、

  • Windowsサービス(UiPath.Service.Host.exe) :(サイトより引用)すべての操作の頭脳です。
  • NuGetのプログラム: アクティビティパッケージのダウンロードを行います
  • UiPath.Executor.exe: (サイトより引用)プロセスの実行を直接担当するコンポーネントです。
  • UiPath.Agent.exe: (サイトより引用)Robot の実際のユーザーインターフェースです。
  • UiPath Studio: 開発ツールです
  • Regutil.exe: (サイトより引用)マシンをオンラインまたはオフラインでアクティベーションできる簡易コマンドラインツールです。

などが動いています。とってもややこしいですね。
参考: https://docs.uipath.com/robot/lang-ja/docs/introduction

どのネット接続処理を、どのプログラムがやってるかの例

つづいてそれらのプログラムたちが、どんな(ネット接続をともなう)処理を担当しているか、下記に例を示してみます。あわせてなにも設定しなかったときのデフォルトの挙動(IE設定をみるか、ダイレクト接続するか)も整理しました。

No ネット接続をともなう処理 それを実施するプロセス・サービス 初期状態の挙動
1 OCへの接続・切断 UiPath.Service.Host ダイレクト
2 タスクトレイで操作(最新ワークフローのチェックとか) UiPath.Service.Host ダイレクト
3 ハートビート(Heartbeat) UiPath.Service.Host ダイレクト
4 StudioからのPublish UiPath.Service.Host ダイレクト
5 nupkgのダウンロード(ロボ)(タスクトレイからのnupkgダウンロード) NuGetのプログラム ダイレクト
6 nupkgのダウンロード(Studio) UiPath Studio(がNuGetを呼んでそう) IE設定を参照
7 ワークフロー内のアクティビティのHTTPアクセス(「Orchestrator への HTTP 要求」「HTTP 要求」アクティビティで確認)Studioから実行 UiPath.Executor IE設定を参照
8 上記ワークフローをタスクトレイから実行 UiPath.Executor IE設定を参照
9 Regutilによるオンラインアクティベーション Regutil IE設定を参照

この初期状態からもわかるとおり UiPath.Service.HostNuGetのプログラム以外はIE設定を参照しているので、これら二つを明示的に設定変更すれば、プロキシ経由でのアクセスができるというTL;DRの結論が得られました。

4のStudioからのパブリッシュをUiPath.Service.Hostがやっているのは少し意外でした。6も、5と同様NuGet.Configに依存すると思いましたが、独自で設定をもってそうでコレも意外。

またUiPath.Agentは、明確にネット接続している処理を見つけることができず、従って初期状態でどのような挙動を示すかも不明です。。

個別のプログラムが参照する設定ファイル

さて個別のプログラムたちが参照する、設定ファイルもまとめておきます。あ、TL;DR文中の注記にも書きましたが 32bit版Windowsについては微妙にパスが異なりますのでご注意ください。

No プロセス・サービス プロキシ設定を記述する設定ファイル 備考
1 UiPath.Service.Host.exe C:\Program Files (x86)\UiPath\Studio\UiPath.Service.Host.exe.config サービスの再起動が必要
2 NuGetのプログラム C:\Windows\SysWOW64\config\systemprofile\AppData\Roaming\NuGet\NuGet.Config サービスの再起動が必要
3 UiPath Studio C:\Users\[ユーザ名]\AppData\Roaming\NuGet\NuGet.Config Studioの再起動が必要
4 UiPath.Executor.exe C:\Program Files (x86)\UiPath\Studio\UiPath.Executor.exe.config サービスの再起動は不要
5 Regutil.exe C:\Program Files (x86)\UiPath\Studio\UiPath\license.config
6 UiPath.Agent.exe C:\Program Files (x86)\UiPath\Studio\UiPath.Agent.exe.config (利用シーンがない)

2019/12/24追記:
「nupkgのダウンロード(Studio)」時の設定ファイルについて追記しました。

*.exe.config 系の記述方法はすべて同じなので、TL;DRで記述したので個別の編集方法は割愛。NuGet.ConfigもTL;DRで記述したので割愛。

残はlicense.config ですがオンラインアクティベーションをするためのプロキシ設定について (Studio / ロボット) に情報がありますが、

license.config
<SHAFERXMLParams>
<NSAEnabled>1</NSAEnabled>
<NSLEnabled>1</NSLEnabled>
<SecurityValue>15</SecurityValue>
<OfflineMode>0</OfflineMode>
<WorkDir>%PROGRAMDATA%\UiPath\License</WorkDir>
<LicDir>%PROGRAMDATA%\UiPath\License</LicDir>
<LogLevel>0</LogLevel>
<LogQLen>300</LogQLen>
<CacheQLen>25</CacheQLen>
<SoapThreadsMin>10</SoapThreadsMin>
<SoapThreadsMax>10</SoapThreadsMax>
<MaxLogSize>0</MaxLogSize>
<ProxyIP>127.0.0.1</ProxyIP>
<ProxyPort>8888</ProxyPort>
</SHAFERXMLParams>

などとすればよいようですね。

いくつか補足・残件整理

UiPath.Service.Host.exe.config だけをプロキシ設定するとトラブった

UiPath.Service.Host.exe.config だけをプロキシ設定にしたところ(つまりNuGet.Configは修正しない) タスクトレイからのアクティビティパッケージ更新でエラーが。。

下記オペを行うと
03.png
エラーとなりました。
04.png
詳細を開いてみると、、、
05.png

なんか失敗してます。テストした環境は「プロキシ経由でなくてもダイレクトで繋がる環境」だったので、ダイレクトにつなぎに行くから接続に失敗した、のではなく「UiPath.Service.Host.exe.configを修正するとNuGet.Configも修正しないとダメ」 なように見えますね。ご注意です。

ちなみにStackTraceはこんな内容です。

パッケージ 'Hello2019_1.1.0.2' のインストールに失敗しました
RemoteException wrapping System.Exception: パッケージ 'Hello2019_1.1.0.2' のインストールに失敗しました
---> RemoteException wrapping System.Exception: NU1101: Unable to find package Hello2019_1. 
No packages exist with this id in source(s): Go!, https://orch.example1.xyz/nuget/activities, 
https://orch.example1.xyz/nuget/feed/default, Local, Microsoft Visual Studio Offline Packages, Official 

UiPath Studio の nupkgダウンロードの制御方法が不明 (→ 解決しました)

先の整理における「nupkgのダウンロード(Studio)」について、初期状態ではIE設定を参照しているわけですが、プロキシ設定を明示的に設定するための設定ファイルが不明です。わかる方どなたか教えてください。。。

一応ですがこのオペを行った時に、明示的にプロキシ経由にする設定ファイルの場所が不明ってことです、、。
studio.png

2019/12/24追記:
表には反映しましたがC:\Users\[ユーザ名]\AppData\Roaming\NuGet\NuGet.Configでした。

環境の差異

UiPathのEditionや、Windowsの32/64bitなど、今回の環境と異なる環境ではいくつか設定箇所・方法について差異がありますので、それらを記述しておきます(必要に応じて記事化します)。

  • 32bit版と64bit版のWindowsで設定ファイルのパスが異なっています。
  • 今回はUiPathのEnterprise版で確認を行いましたが、Community版のUiPathはインストールパスが異なり、従って設定ファイルのパスも異なります。例:C:\Users\[ユーザ名]\AppData\Local\UiPath\app-19.10.2(←バージョン)
  • Enterprise版とCommunity版でRobotのタイプが
    • SCM 管理の Robot サービス (UiPath.Service.Host.exe)
    • ユーザーモードの Robot サービス (UiPath.Service.UserHost.exe)

と異なっています。UiPath.Service.UserHost.exe は再起動の方法が「サービス」でなく「タスクマネージャ」上の終了だったり、Roboがnupkgダウンロード時に参照するNuGet.configファイルの配置場所がC:\Users\[ユーザ名]\AppData\Roaming\NuGetだったりなど、設定箇所が若干異なっています。これら、Community Editionの場合の設定方法や、さらに課題の多い認証ありプロキシの場合などは別記事で整理を行います。

以上、おつかれさまでしたー。

謝辞

きっかけは、https://github.com/RisaMizushina/UPProxyEnablementKit/releases このツールです。Enterprise/Community 版のUiPathそれぞれについて、設定ファイルを出力してくれるツールです。出力結果を見て、自分が知ってるより多くの設定ファイルを出力していて「あー整理しておく必要あるなー」とおもった次第です。作者の方、感謝いたします!

関連リンク


  1. 一応「認証あり」プロキシについて言及すると、結論だけいうと認証プロキシの手前に認証なしプロキシ(HttpProxyAuth)を置いて、それに認証処理をやってもらう、という回避方法がありそうです。 

  2. 64bit版のWindowsの場合。32bit版の場合は、それぞれC:\Program Files\UiPath\Studio\UiPath.Service.Host.exe.config,C:\Windows\System32\config\systemprofile\AppData\Roaming\NuGet\NuGet.Config となります。 

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
8
Help us understand the problem. What are the problem?