さて今回は、地味だけどUiPathの導入で結構つまずくというか障壁になることが多い、プロキシ接続設定の話。ぼんやり手元に情報はあったのですが、あらためて網羅的に整理してみました。
イントロ
UiPath StudioやRobotですが、気づかないところで結構インターネットに接続しています。たとえば
- UiPath StudioやRobotがアクティビティパッケージをダウンロードするとき
- タスクトレイの(正確にはWindowsサービス) のダイアログからのUiPath Orchestrator(以下OC)との接続・切断
- OCと接続しているロボットが「じぶんは生きてるよ」っていうOCへの通信(Heartbeat)
- StudioからワークフローをOCへパブリッシュするとき
などなどです。
ところで、仕事でつかう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がアクティビティパッケージをダウンロードしている図
TL;DR
- 大半は「IEの設定」をそのまま引き継ぐようになっているので、設定しなくてもネット接続は可能でした。
- 「OCへの接続/切断 関連」や「Robotのアクティビティパッケージ(nupkg)のダウンロード」「OCへのパブリッシュ」は、デフォルトではIEの設定を引き継がないでダイレクトにネット接続しようとするので、それらの設定変更は必要。そして、その設定ファイルの編集は管理者権限が必要。
TL;DR(補足)
あ、ちなみに「IEの設定」というのは、いわゆる「インターネットのプロパティ」のことです。
すでにプロキシサーバが導入されていれば、ココにプロキシ設定がされているはずです。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
から。
...割愛。
<!--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を取りにいってないなど)、なかったら適宜つくればよいようです。
<?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 サービスを再起動しておきます。
「認証なしプロキシを越えられればイイや」であれば、以上で終了です。おつかれさまでした。
詳細。
わたくしすぐ忘れてしまうので、もうすこし詳細を記載します。
認証なしのプロキシの場合は以上でよいのですが、認証ありプロキシの場合は、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.Host
とNuGetのプログラム
以外は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 / ロボット) に情報がありますが、
<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
は修正しない) タスクトレイからのアクティビティパッケージ更新でエラーが。。
下記オペを行うと
エラーとなりました。
詳細を開いてみると、、、
なんか失敗してます。テストした環境は「プロキシ経由でなくてもダイレクトで繋がる環境」だったので、ダイレクトにつなぎに行くから接続に失敗した、のではなく「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設定を参照しているわけですが、プロキシ設定を明示的に設定するための設定ファイルが不明です。わかる方どなたか教えてください。。。
一応ですがこのオペを行った時に、明示的にプロキシ経由にする設定ファイルの場所が不明ってことです、、。
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それぞれについて、設定ファイルを出力してくれるツールです。出力結果を見て、自分が知ってるより多くの設定ファイルを出力していて「あー整理しておく必要あるなー」とおもった次第です。作者の方、感謝いたします!
関連リンク
- Robot をプロキシサーバーからリダイレクトする コレで全部いけるといえばいけるのですが、、、。基本的な考え方やデフォルト値がわからない。アクティベーション(regutil.exe)は別記事だったり、、。
- [オンラインアクティベーションをするためのプロキシ設定について (Studio / ロボット)] (https://www.uipath.com/ja/resources/knowledge-base/proxy-settings-online-activation) regutil.exe は(公式の)ナレッジベースで。。
- LicenseTool コマンドの説明 あれ、regutil.exe 廃止?でしたっけ。新ツールのプロキシ設定はココ。
- UiPath Robot ガイド>>はじめに リンク先のさらにリンク先に、サービス、Executor、トレイ、などプロセスの種類が説明されています。
- UiPath Robot 単独インストールからワークフロー実行までのハンズオン。またプロキシを入れるなど、デバッグに便利なTIPSのご紹介。 まえに中途半端に整理していたところを、今回包含して整理できました。
- UiPath製品群をプロキシ環境で使用するための環境設定手順(UiPath Community版/認証なしプロキシのケース) 本記事はEnterprise版についてですが、Community版についての記事。