Automation AnywhereのControl RoomをLinux環境で構築する

# 前提とか色々

:::note warn
この記事の賞味期限は、最長でも2024年6月30日です（理由は後述）
:::

## このDocument is 何？
TL;DR的な部分を箇条書きします。
- Automation Anywhere Automation360というRPAツールがあります。
- Automation AnywhereはControl Roomという管理機能が必須です。
- Control RoomはLinux環境でも構築できます。
- というわけでやってみた。

## Automation Anywhereの概要とか
Automation Anywhere Automation360というRPAソフトウェアがあります。
昔はAutomation Anywhere A2019という名前でした。Automation Anywhere 
ここから先、~~面倒なので~~A360と書きます。

:::note info
Automation Anywhere Enterprise 11とかEnterprise 10は別の製品です。アーキテクチャは似てる部分もあるけど、この記事では触れません。
:::

A360は、管理機能のControl Roomと、Botを実行するBot Runnerが最小の構成要素になります。アーキテクチャとかのControl Roomの概要は[オフィシャルドキュメント](https://docs.automationanywhere.com/ja-JP/bundle/enterprise-v2019/page/enterprise-cloud/topics/aae-architecture-implementation/cloud-control-room-overview.html)を読むのが手っ取り早いです。
平たく言えば「Control Roomがサーバー、Bot Runnerがクライアント」と理解しておけばよいです。

さて、A360のControl Roomは、ちょっと面白い点があります。それは他のRPAソフトウェアの管理機能が、基盤となるOSとしてWindows Serverのみ対応していることが多い中、Linux環境でも構築できることです。

**（参考）** 他のRPAソフトウェアの管理機能のソフトウェア要件
- [Blue Prism](https://bpdocs.blueprism.com/bp-6-10/ja-jp/supported-software.htm)
- [UiPath](https://docs.uipath.com/installation-and-upgrade/lang-ja/docs/orchestrator-software-requirements)

:::note info
2022年10月現在、A360のBot Runner、すなわちクライアント側はWindows Onlyです
:::

さて、Linuxで構築できると、どんな良いことがあるかというと、サクッと試してみる検証環境を作るのに、ライセンス費用がかからないことです。他にも社内インフラがLinuxベースだったら、それに乗せやすい、とかもあるかもしれません。

## その前に身も蓋もないことを書いておきます
最近ではRPAツールの管理機能は、クラウド上にサービスとして用意されているパターンも結構あります。というかA360もそうです。むしろクラウドが基本、ぐらいの勢いです。
他のツールでいえば、[UiPathのAutomation Cloud](https://docs.uipath.com/automation-cloud/lang-ja/docs/introduction)とか、[Blue Prism Cloud](https://www.blueprism.com/japan/products/blue-prism-cloud/)とかですね。

なので、業務で導入するなら特に、管理サーバーを自前、いわゆるオンプレミスに構築する必要があるかどうか、という点から、本来は検討すべきです。

でもまー、とりあえずその辺の一長一短とかは、それだけで別の記事になるレベルなので、ここでは触れません。

# 構築するよー
## 準備するもの
- Linuxが動くPC、または仮想環境を構築できる方法（Hyper-Vとか）
- CentOSのインストーラーのiso
- A360管理機能のLinux用インストーラー

さて、Cent OSは~~いろいろ政治的なアレやソレで~~サポート期間がちょっと変なことになってて、

|Version|サポート終了日|
|:--|:--|
|CentOS 7|2024年6月30日|
|CentOS 8|2021年12月31日|

この記事を作成している2022年10月現在、CentOS 8はすでにサポートが切れてるため、**CentOS 7を使うのが無難**、ということになります。まあ、CentOS 7も、あと1年半ちょっとでサポート切れになるので、この記事の賞味期限もそれまで、ということになります。
*それより前にA360のインストール方法とかが変わってると思いますが。*

というわけで、CentOSのインストーラーは、[公式サイト](https://www.centos.org/download/)から、7シリーズの最新版を持ってきましょう。**x86_64**で！

A360のインストーラーは、ライセンスがあるなら代理店とかに確認、なければ[30日の無料お試し](https://jp.automationanywhere.com/start-free-trial)などで申し込むことで入手できる、と思います。

## Linux (CentOS 7)のインストール

インストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/26c33c01-9171-d87c-40be-a6dd10118098.png)

最近のLinuxはハイカラな感じで、インストーラーがわかりやすく色々やってくれちゃいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/008661ea-d546-3b6d-af12-00f6651f1105.png)

特に日本語でやることに抵抗がなければ、日本語を選んでおけばよいと思います。
英語でも何でも、別にいいのですが。

まず必要なのは「インストール先」のディスクを選ぶことと、「ネットワークとホスト名」を設定するぐらいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/7e2b04c9-711e-dab4-128f-d5b0993c9560.png)

インストール先はディスクを選択すれば自動でパティーション作ってやってくれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/9c1ba8cd-268e-6c01-54f7-1242ad8f421f.png)

「ネットワークとホスト名」では、**Ehternetのスイッチをオンにする**ことと、**ホスト名の設定**を忘れないようにしましょう。特に後者、忘れると面倒な手間が増えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/8798c717-2277-2807-5ac7-baab7ce72cd4.png)

あとは「インストールの開始」を押して、rootのパスワードと、初期ユーザーを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/d265fd92-6742-e149-4360-f19e969111c6.png)
ここまでやっておけば、インストーラーが自動で走って、良い感じに完了してくれる筈。です。
しばらく待ちましょう。

インストールが終わる右下に再起動ボタンが出るので、再起動します。

## Linux上での準備
### TeraTermで繋ぐ
コンソールでログインして、

    ip a

します。これでIPアドレスが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/5e10db2f-af2a-cc7d-efd7-66ba551fb5e7.png)

あとはTeraTermとかでつないで作業したほうが楽なので、そんな感じで。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/0678f954-b750-a69b-177e-f58f10d21bd3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/e6634868-ea2b-a779-b47d-d4ed401466b1.png)


### sudoできるようにする

さて、まずはユーザーでsudoできるようにします。

    su root
して、

    visudo

で、

    ##	Allows	people	in	group	wheel	to	run	all	commands
    %wheel	ALL=(ALL)	ALL

の行まで↓キーで移動して、```i```キーを押して挿入モードにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/1acbd7ff-c106-a130-e6b7-930bdc277d03.png)

こんな感じで、

    ユーザー名    ALL=(ALL)      ALL

みたいに記載します。ユーザー名はインストール時に作ったユーザーです。
あとは```Esc```キーで挿入モードを解除して、```:wq!```+Enter で上書き保存できます。

    Exit

で抜けて、

    sudo ls

とかやってエラーが出ないことを確認しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/f9d4d965-fbe8-c55e-2b1a-e080522cfcf6.png)

### ソフトウェアの更新

    sudo yum update

します。
「ダウンロードしてええか？」と聞かれたら```y```しましょう。「上記の処理を行いますか？」みたいなこと聞かれることもありますが、これも```y```で。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/43d1bfcd-ff31-ba0a-69e8-f423f3b8b234.png)
色々やってくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/4170de8f-5b76-4ffc-4ef2-fc337a7fa683.png)
```完了しました!```
って言ってくれるの、わかりやすくていいですね！

### SQL Serverのインストール
今回はSQL Server 2019でやってみました。

基本的には[Microsoftの記事](https://learn.microsoft.com/ja-jp/sql/linux/quickstart-install-connect-red-hat?view=sql-server-linux-ver15&preserve-view=true)の通りにやればよいのですが、まずPython2のインストールから。

    sudo alternatives --config python
    sudo yum install python2
    sudo yum install compat-openssl10
    sudo alternatives --config python

をします。もうインストールされてるよとか言われても気にしなくて大丈夫です。

次にリポジトリ構成ファイルをインストールします。が、上にリンクを貼ったMicrosoftのドキュメントはRHEL 8（≒CentOS 8）相当なので、バージョン7に読み替える必要があります。
なので、必要なコマンドは、

     sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo

になります。rhel/***8***/mssql-server-2019.repo の部分を修正するわけです。

その後、

     sudo yum install -y mssql-server

します。また「インストールしますか？」とか色々聞かれるかもしれませんが、例によって```y```でOKです。

インストールが終わったらセットアップです。

    sudo /opt/mssql/bin/mssql-conf setup

最初にエディションを聞かれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/a72f5d25-39ec-267c-35ac-d5ea218c473e.png)

本番環境の設置とかでライセンスがあるなら当該のを選ぶ必要がありますが、検証なら3 (Express)で良いかと思います。

```ライセンス条項に同意しますか? [Yes/No]:```
で、```y```を押します。
言語の設定は、特にこだわりがなければ日本語の```6```で良いでしょう。
あとはSQL Serverの管理者のパスワードを入力します。確認も含めて2回入力することになります。**rootとかのパスワードじゃないですよ**。
```セットアップは正常に完了しました。SQL Server を起動しています。```
と出たら完了。

### Firewallの設定
外からHTTPやHTTPSでつながるようにします。

    sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
    sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
    sudo firewall-cmd --reload

### レポジトリの作成
A360のBotファイル等を保存する場所を作ります。

場所はA360のサービスが参照さえできれば、どこでもいいといえばどこでもいいのですが、とりあえず一般的なLinuxの流儀だと ```/var```配下とかだと思いますので、

    sudo mkdir /var/A360repos
    sudo chmod 777 /var/A360repos

で作っておきます。**これ意外とハマるんですが、レポジトリはどうもPermissionで777必要なようです**。（666とかだと後でエラー出ます）

### A360のインストール

とりあえず、```Automation360_el7_15436.bin```みたいなファイルを入手していることと思います。```15436```の部分はBuild番号なので、最新版を入手した場合、別の数字になってるかと思います。ここから先の説明でも適宜、読み替えてください。

さて、インストーラーのファイルをLinux環境に転送します。
TeraTermだと```ファイル(F)``` → ```SSH SCP...``` で簡単に転送できます。Fromのところにファイル名を選択して```Send```を押すだけです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/4e5c372c-76d5-6412-1ad0-b296dfc4e25e.png)
ちょっと時間がかかりますが、転送してくれます。
転送先を指定しない場合、```/home/ユーザー名/``` に転送されるはずです。

    ls /home/ユーザー名

でファイルの転送が確認できたら、

    sudo chmod 777 /home/ユーザー名/Automation360_el7_15436.bin

します。これで「コピーしたファイル（インストーラー）を実行する許可」がファイルに付与されます。

あとは、

    sudo /home/ユーザー名/Automation360_el7_15436.bin

でインストールが開始されます。

インストール中に聞かれるのは、

1. ★継続するかどうか (1:継続 2:キャンセル)
1. ★解説
1. ライセンス同意
1. ★HTTP Port (デフォルトは80）
1. ★HTTPS Port （デフォルトは443)
1. ★自己署名を使うか　(1:使用 2:不使用 デフォルトは1)
1. ★HTTPS接続を強制するか　(1:しない 2:する デフォルトは1)
1. ★クラスターセットアップするか　(1:しない 2:する デフォルトは1)
1. ★DBサーバー　(無入力だとlocalhost)
1. ★DBサーバーのPort　(無入力だと1433)
1. ★作成するDB名　(無入力だとAutomation360-Database)
1. SQL ServerのログインID
1. SQL Serverのパスワード
1. ★DBのSecure Connection　(1:無効 2:有効 デフォルトは1)
1. ElasticSearchのパスワード

で、★がついてるのは何も入力せずEnterで問題ありません。

3のライセンス同意は```0```を入力したあと、同意するかy/nで聞かれるので```y```を入力します。

12のSQL ServerのログインIDは```sa```と入力します。
13のSQL Serverパスワードは、SQL Serverのセットアップ時に入力した管理者パスワードになります。

15のElasticSearchパスワードですが、[A360のドキュメント](https://docs.automationanywhere.com/ja-JP/bundle/enterprise-v2019/page/enterprise-cloud/topics/deployment-planning/on-prem-install/install-elasticsearch-credentials.html)を見る限り、

> Elasticsearch 認証パスワードとして次のことを確認してください。
> パスワードには、スペース、セミコロン (;)、パーセント (%)、バックスラッシュ (\) は使用できません。
> 最初の文字には、マイナス記号 (-) やフォワードスラッシュ (/) は使用できません。
> アルファベットを 1 文字以上含めます。

と書かれてるので、こちらを遵守しておきましょう。

あとは確認が2回ぐらいあって、```Enter```するとインストールが開始されます。お茶でも飲んで待ってましょう。

インストール環境にもよりますが、たぶん10分ぐらいで完了します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/ea57f246-59e3-37d5-c78e-4f97d1566daa.png)

インストールが完了したら、念のため、

    sudo systemctl | grep controlroom

して、関連サービスが```loaded active running```になっていることを確認しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/5b04c595-9229-d083-0f8d-6e41aed4df41.png)


### Control Roomの初期設定

ここまで完了すると、

    http://(IPアドレス)/

で、Control Roomの初期画面にアクセスできるようになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/b17f52ad-a5c5-183c-28d3-f3ff801b3de7.png)

リポジトリパスには、先ほど作成した```/var/A360repos```を入力します。~~Windows版の設定値が例に書いてあるって不親切ですネ~~

Control RoomアクセスURLは、```http://192.168.1.146```のようにIPアドレスベースのURLを入力しておきましょう。ホスト名は後で変更できます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/2a916c4d-1cd7-653b-41c7-e01830ca7d6c.png)
**Credential Vault設定**は、とりあえず```エクスプレスモード```で良いです。本番環境とかでなければ。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/dd5586c6-18dc-da39-f15f-5bea294f111a.png)
**Control Roomユーザーの認証タイプ**は、AD連携とか考えてるのでなければ、```COntrol Roomデータベース```にします。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/37dbb2df-2a59-03a4-e75f-2420b44a6b05.png)
**Control Room最初の管理者**ですが、Adminとかにしておくのが無難です。というのも、Bot開発や実行をするユーザーは別に作ることになる（≒普段使いのユーザーは別）で、**開発ユーザーにAdmin権限は付与できない**仕様なので。

あとはセキュリティの質問を適当に入力してやれば、Control Roomが表示されます。
**お疲れ様でした！**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703165/5f5cef41-3372-812d-c5cf-44e5aff45f13.png)

### 余談

Bot作って試すとかは、新規でユーザー作成することになりますが、

- ユーザーのパスワードは初回ログイン時にユーザー側が設定するので、管理者が設定するパスワードは使い捨てでOK
- とりあえずBot作成して試すユーザーには```AAE_Bot Developer``` ```AAE_Locker Admin``` ```AAE_Pool Admin``` ```AAE_Queue Admin``` あたりを付与しておけばOK **（あくまで検証環境とかで厳密な運用をしない場合の話ですが）**
- メールアドレスは必須なので、ガチ運用するのでなければ、```なんちゃら@example.com``` みたいな設定で逃げればOK

みたいな感じで開始すると、無駄がないと思います。