UiPath Orchestrator からStudioとRobotのアップグレードを制御する

# はじめに

オンプレミス環境と比較し、Automation Cloud利用環境ではStudioとRobotの接続保証の兼ね合いでサポート期間が短くなり、アップグレードを毎年ペースで実施する必要があるのは、下記ブログで紹介させて頂きました。

https://qiita.com/Jun96427231/items/eaf0a9ceb86e84bc9fbc

加えて、２ヶ月に１回以上のペースでリリースされる改良点や不具合対応、セキュリティパッチに伴うパッチバージョンを都度アップグレードして行く場合は大変！Chrome/EdgeのMV2サポート終了に伴い、2022年8月にChrome/EdgeのMV2からMV3への移行でパッチバージョンがリリースされましたが、こちらのパッチバージョンへのアップグレードも必須！そこで良い機会なので本記事を書くことにしました！

ユーザーのアップグレードの負担を極力軽減するための機構として期待できるのが、「クライアント コンポーネントを自動更新する」機能です。もう少し具体的に言うと「UiPath Orchestrator からStudioとRobotのアップグレードを制御する」機能ですね。UiPathコミュニティ版では、強制適用されているので、ご存じの方も多いのではないでしょうか。エンタープライズ版では、強制適用をコントロールできる機能として、UiPath Platform 2021.10から実装されてます。

# 前提

本機能を利用する場合、Orchestrator、Studio、Robot 2021.10 以降が必要です。本記事ではAutomation Cloud-Orchestratorの2022年8月時点のもの、StudioとRobotのバージョンは2022.4系を利用して解説しています。
本記事は下記のUiPathドキュメントポータルからも一部引用しています。

https://docs.uipath.com/orchestrator/lang-ja/docs/auto-updating-client-components



#  OrchestratorでStudioとRobotのアップグレードの制御する
アップグレードは、ユーザーごと/グループごと、そしてマシンオブジェクトごとの設定ができます。それぞれで設定箇所、設定できることも異なるので、それぞれ分けて解説します。

# ①ユーザーごと/グループごとでアップグレードを設定したい場合
ここでは、アップグレードしたいユーザごと、もしくはグループごとのStudio、Robot、Assistantのバージョンを設定できます。Attendedのユースケースに推奨されるケースですね！

## 設定場所
[テナント]＞[アクセス権を管理]＞
設定したいユーザーもしくはグループでメニュー[編集]を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/ff73d818-4ddd-2776-04c5-7d3aa0c7fc16.png)

## 設定メニュー

| 自動更新ポリシー | 説明 |
|:-----------|:------------|
| 最新のパッチ | 第２階層メニューで選択したマイナーバージョン(例：バージョン22.4の最新パッチ)の最新パッチで常にアップグレードされる様になります。|
| 最新のバージョン | 最新のマイナーバージョン・パッチバージョンで常にアップグレードされる様になります。|
| 特定のバージョン | 第２階層メニューで選択したマイナーバージョン・パッチバージョン（(例：22.4.4)でアップグレードされます。|

:::note warn
インストール済みのバージョンのダウングレードはサポートされていません。
:::

## 動作
設定した更新ポリシーに基づき、クライアントの現在のインストールバージョンと不一致の場合は、しばらくすると各クライアント端末に下記のメンテナンスウインドウが表示されます。Automation DeveloperもしくはAttended Robotのユーザーモード指定でインストール（クイックインストールや自分にのみインストールを指定していた場合も含む）されていた場合は、適用まで約24時間の猶予があります。これを超えると、更新プログラムは自動的に適用されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/f48c7e95-88a8-c8a3-bde0-b9224eee1bca.png)

# ②マシンオブジェクトごとに設定したい場合
マシンオブジェクトの更新ポリシーを設定すると、マシンキーを使用して、Orchestrator に接続されているすべてのマシン上でロボットのバージョンを更新できます。Unattendedのユースケースに推奨されるケースですね！

## 設定場所
[テナント]＞[マシン]＞
設定したいマシンオブジェクトのメニュー[マシン編集]を選択します。＞[メンテナンス]

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/27c409b5-ffa3-9c3b-6674-ec5422effecd.png)


## 設定メニュー

| 自動更新ポリシー | 説明 |
|:-----------|:------------|
| 最新のパッチ | 第２階層メニューで選択したマイナーバージョン(例：バージョン22.4の最新パッチ)の最新パッチで常にアップグレードされる様になります。
| 最新のバージョン | 最新のマイナーバージョン・パッチバージョンで常にアップグレードされる様になります。|
| 特定のバージョン | 第２階層メニューで選択したマイナーバージョン・パッチバージョン（(例：22.4.4)でアップグレードされます。|

### 自動更新のスケジュール設定
更新を特定の日時に開始するようスケジュール設定することができます。また、メンテナンスウィンドウの期間を設定することもできます。メンテナンス ウィンドウに設定された期間が過ぎても更新が開始されなかった場合は、次に利用可能な期間内にスケジュールされます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/e2bd9f94-bde8-eace-f272-dfb9d2b053ca.png)

:::note warn
インストール済みのバージョンのダウングレードはサポートされていません。
:::

:::note info
公式のサイトでは記載なかったのですが[マシン]では個人用のワークスペース有効化で追加されるユーザーごとのマシンも表示されており、ここでもユーザーごとの自動更新設定ができ、[アクセス権を管理]で設定できなかったスケジュール設定も更新ステータスの確認もできる様になります。ただし、公式では記載されていないことと、[アクセス権を管理]でAttendedを推奨と記載があるので、まだ完全ではない可能性もあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/4c1cb7e0-2e1c-6b70-98b1-6ee8432b48cc.png)
:::

## 動作
設定した更新ポリシー（スケジュール指定した場合は、その条件）に基づき、クライアントの現在のインストールバージョンと不一致の場合で、Automation Developerのサービスモードもしくは、Unattendedロボットでインストールされていた場合は、メンテナンスウインドウを表示せず、猶予時間もなく、ログオフ状態でも直ちに更新プログラムは自動的に適用されます。

:::note warn
更新まで時間を要する場合があります。２時間以上経過した後にインストールされたことがありました。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/9c8d8c93-2ca5-f4cd-9ba3-1909c2790daa.png)

## 更新状況の確認
### 確認場所
[テナント]＞[マシン]＞
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/d03fe933-60ae-4542-4fa4-ab4108112f95.png)

| ステータス | 説明 |
|:-----------|:------------|
| ポリシーなし | ポリシーが定義されていません。|
| 更新が進行中 | マシン上で更新プロセスが進行中の場合、このステータスが表示されます。|
| 準拠 | マシン上のRobotのバージョンが更新ポリシーと一致しています。|
| 非準拠 | マシン上のRobotのバージョンが、ポリシーで設定されたバージョンと異なっています (たとえば、Robot のバージョンが 2022.4.3 で、ポリシーでは 2022.4.4 に設定されている)。|
| 更新に失敗 | このステータスは、更新プロセスが失敗した場合に表示されます。更新ログで詳細を確認することができます。|
|N/A | このステータスは、非アクティブなマシンを無視する設定がオンになっていて、ロボットがしばらくの間接続されていない場合、またはマシンの種類が自動更新プロセスに対応していない場合に表示されます。|

## 更新に失敗した時

以下、UiPathドキュメントポータルの引用です。実際には計測していません。
～
最初のインストールに失敗すると、更新サービスは同じ頻度で 3 回リトライします (初回試行の 1 時間後、最初のリトライの 2 時間後、および最後のリトライの 4 時間後)。更新サーバーは、更新を開始してから終了するまで、72 時間待機します。この期間の経過後に新規バージョンがインストールされない場合、詳細なエラーがログに追加されます。更新は、次に要求を受信したときに再試行されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/0e26e3f0-2e2f-b6fb-f834-a6984196ebf0.png)


## バージョンステータスが正しく表示されない時
過去、接続したが接続しなくなった不要なマシンのバージョンも残っており、これがゴミになって正しく表示されないこともあります。下記の非準拠が接続しなくなった不要なマシンが入っているマシンテンプレートです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/1570ace6-9404-f99f-5ff5-22d0ba334402.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/a48186d1-b810-268a-bcf7-49b6870306cb.png)

２ヶ月前から接続しなくなったので、これを対象外にします。

### 設定場所
[テナント]＞[設定]＞
[クライアント バイナリ (Robot、Assistant、Studio) の自動更新設定]でオフラインの経過日数で無視する設定をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/f0255a4c-8223-76c1-ab8f-55ac6cf6b4d4.png)

日数を10日間に設定すると、10日以上接続がないマシンが対象外になり準拠になり、正しく表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/aec5cdc9-cb01-1899-32eb-1eba291853e6.png)

このマシンテンプレートを利用しているマシンを確認すると10日以上接続がないマシンは「該当なし」と表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/c6693032-39f0-41b9-2e3e-4696ace8761c.png)


# ③インストールされているバージョンの確認
## 確認場所

[テナント]＞[マシン]でインストールされたバージョンが確認できます。
特定のマシンに接続されている各 Robot のバージョンをすべて確認するには、「インストール済みのバージョンとログを表示」を選択すれば確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/54d5e085-4b95-789d-521b-d8f14a13b2bc.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/69d42d4d-4685-17be-e245-d33d6788630e.png)

## 自動更新ログの確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/91ac10be-4780-2145-6b26-baa96bfb2110.png)

# ④自動更新とプロセスの実行が重なっていた場合の挙動
自動更新とプロセスの実行が重なっていたら、どうなるのか？ですが、自動更新の開始は下記条件になってます。

| クライアントコンポーネント | 自動更新の開始条件 |
|:-----------|:------------|
| Studio | 実行中のプロセスやアクティブなセッションがない。|
| Robot | 実行中のジョブやプロセスがない。|
| Assistant | 実行中のプロセスや保留中のアクティビティ (インストールまたはダウンロード中のプロセス) がない。|

更新プロセス中、ロボットは更新が完了するまでジョブを開始しないので、これも大丈夫そうです。

:::note warn
更新プログラムのインストールが開始されるとStudioとAssitantが閉じる様です。データが失われないように更新を開始する前に保存して閉じることをお勧めします。
:::

# ⑤ポリシーの優先度
ユーザー レベルのポリシー、グループ レベルのポリシー、マシン レベルのポリシーが同じロボットに適用されている場合、ユーザー レベルのポリシーが優先されます。

# おわりに
まだ少し検証しきれていない部分もありますが、概ね使える機能であることがわかりました！Orchestrator からStudioとRobotのバージョンを管理し、そしてアップグレードを制御することで、現場の負担が軽減できそうです！積極的に使って行きたい機能です！