Workato：On-prem Agentで様々なリソースを利用してみる

# はじめに
前回は、LinuxへのOn-prem Agentのインストールについて説明しました。

https://qiita.com/tabimoba/items/fba7a4a3237260cdbbf1

今回は、On-prem Agentを利用して様々なリソースを利用してみます。

# WorkatoからOn-prem Agentを踏み台としたHTTPアクセスをしてみる

WorkatoとOn-prem Agentを組み合わせることで、On-prem Agentがインストールされた環境（サーバ）を踏み台として、HTTPアクセスが行えるようになります。また、プライベートネットワーク内のHTTPアクセスも可能ですが、On-prem Agentから外部（インターネット）へのアクセスが可能な場合は、On-prem Agentを踏み台としてインターネット上に対してHTTPアクセスすることが可能です。

## 手順

### 【１】コネクション作成

HTTPコネクタのコネクションを次の通り追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/123e2cda-8caa-a10f-ea47-1870d1538efb.png)


|項目                                     | 値                                                    |
|:----------------------------------------|:------------------------------------------------------|
|Connection name                          | 任意の名称|
|Connection type                          | 接続先のOn-prem Agentのグループ名|
|Authentication type                      | 接続先アプリに応じたものを選択 |
|Base URL                                 | 空欄、または接続先に応じたものを入力 |
|Use custom TLS/SSL certification settings| クライアント証明書が必要な場合のみYesとして設定を行う|


### 【２】レシピ作成

HTTPコネクタを追加したレシピを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/89012021-98c1-63a3-10e4-40ea50df1c65.png)

コネクションは、「【１】コネクション作成」で追加したコネクションを選択ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/f2adf26a-73e1-b1b5-e464-d5d09de58c9c.png)

設定は、接続先アプリケーションに応じた設定を行います。
今回は、 ifconfig.io へOn-prem Agent経由でアクセスし、接続元のIPアドレスを取得してみます。

https://ifconfig.io/

ifconfig.io を利用する場合の設定は次の通りとなります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/46f2c6b6-7809-563a-caca-4323494f8e34.png)

### 【３】レシピ実行

作成したレシピ実行をすると、次のような結果となります。
`host`というキーの値が、On-prem Agentがインストールされた環境のIPアドレス、あるいはOn-prem Agentがインストールされた環境の上位にあるNAT（ルータ）のアドレスが出力されていることで、HTTPコネクタのリクエストがOn-prem Agent経由で行われたことが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/a664e6bb-362e-d45b-7b4b-1931a8b820af.png)

## 関連情報

https://docs.workato.com/developing-connectors/http-v2.html

# Workatoからオンプレ上のファイルを操作してみる

WorkatoとOn-prem Agentを組み合わせることで、On-prem Agentがインストールされた環境（サーバ）からアクセス可能なファイルシステム上にあるファイルやフォルダへのアクセスが可能となります。

また、ローカルファイルシステムに限らず、NFSやWindowsファイル共有(CIFS)などのネットワークファイルシステム上にあるファイルへのアクセスも可能ですので、On-prem Agentがインストールされた環境でそれらのネットワークファイルシステムをマウントしておくことで、1台のOn-prem Agentで（複数台にOn-prem Agentをインストールする必要なく）複数台のサーバ上にあるファイルやフォルダへアクセスすることが可能です。

## 手順
### 【１】ファイルの準備

On-prem Agentがインストールされた環境（サーバ）上にファイルを準備します。

```
$ mkdir -p /home/ubuntu
$ echo "Hello, world!" > /home/ubuntu/hello.txt
```

### 【２】config.ymlの変更

`config.yml` に対して、以下の内容を追加します。

※config.ymlは、デフォルトでは次の場所にあります。
- Linux: `/opt/workato-agent/conf/config.yml`
- Windows: `C:\Program Files\Workato Agent <Instance name>`

```yaml
files:
  helloworld:
     base: "/home/ubuntu/data"
```

なお、Windowsの場合は次のようにパスを指定します。（`\` を `\\` として表現します） 

```yaml
files:
  helloworld:
     base: "C:\\Users\\example\\data"
```

以上の設定が完了したら、On-prem Agentを再起動します。

### 【３】レシピ作成

Workatoでは、On-prem filesコネクタを使用することで、レシピからOn-prem Agent上のファイルへアクセスが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/9f74be3a-aea6-60ed-cd1e-3db24446ee92.png)

On-prem filesコネクタで提供される機能は、以下を参照ください。

https://docs.workato.com/connectors/on-prem-files.html

今回は、On-prem Agent上のファイルをダウンロードしてみます。

#### １．コネクション作成

最初に、コネクションを作成します。Baseには上記手順で `config.yml` に追加したフォルダ（ディレクトリ）のパスを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/c17da891-2f3f-d742-368b-012998daef3d.png)

#### ２．Download fileアクションの選択

On-prem filesコネクタをレシピ上へ追加し、「Download file」アクションを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/b7ad3660-b936-3cb6-baa1-2b4d1fa48be3.png)

ダウンロードしたいファイルをドロップダウンメニューから選択するか、ファイルのパスを入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/e8ee5cb5-4dc0-a2dc-8c54-2cd36b8f72f4.png)

#### ３．ダウンロードしたファイル内容を変数にセット

Variables by Workatoコネクタ（あるいはお使いのアプリケーションに対応するコネクタ）を追加し、ダウンロードしたファイルの内容（File contents）をセットします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/6c489248-1a97-913f-97b8-32dcc366cdff.png)

以上の内容をもとに、レシピを作成すると、次の通りとなります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/eced672a-a58d-0a58-fc26-f651e9dfd6f3.png)

### 【４】レシピ実行

作成したレシピ実行をすると、次のような結果となります。

「【１】ファイルの準備」で作成した `hello.txt` の内容がダウンロードされ、Variables by Workatoの結果に反映されている（変数の値にセットされている）ことが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/4f730a4f-7234-2c37-83bc-86f7a2528801.png)
## 関連情報

https://docs.workato.com/connectors/on-prem-files.html


# Workatoからオンプレ上のコマンドを実行してみる

WorkatoとOn-prem Agentを組み合わせることで、On-prem Agentがインストールされた環境（サーバ）上のコマンドを実行することが可能です。

例えば、Workatoからオンプレ上のRPAを実行して後続の作業を進める、オンプレ上のコマンドを定期的に実行する、オンプレ上のコマンドを介してレガシーシステムと連携する等、コマンド実行を通して様々な連携が可能となります。また、レガシーシステムのようなWeb APIを持たないシステムとの連携にも有効です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/57fcf949-64df-3153-faba-0ec8521f3aa7.png)

### 【１】コネクション作成

On-prem command-line scriptsコネクタのコネクションを次の通り追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/e318bc6e-1e76-82c5-0ee4-a2d43eac3485.png)

|項目                                     | 値                                                    |
|:----------------------------------------|:------------------------------------------------------|
|Connection name                          | 任意の名称|
|On-prem group                            | 接続先のOn-prem Agentのグループ名|
|Concurrency limit                        | 同時実行数の上限（省略可能）                            |
|Timeout                                  | タイムアウト（省略可能）                                |
|Scripts                                  | Script name: スクリプト名（任意の名称）<br>Script body: 実行内容|

### 【２】レシピ作成
On-prem command-line scriptsコネクタを追加したレシピを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/e386fdff-06d7-22b8-ba5d-69c87d70a219.png)

コネクションは、「【１】コネクション作成」で追加したコネクションを選択ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/b0d91db3-b308-9395-4505-9dad13f005ea.png)

ステップ上で実行するCommand-line scriptを選択します（「【１】コネクション作成」で設定したScriptsより選択可能）。また、Timeout limitを適宜調整します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/b6e9a9de-8e10-f180-ac16-abde907fbac0.png)

### 【３】レシピ実行

作成したレシピ実行をすると、次のような結果となり、指定されたコマンドが実行されたことが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/66ddbd9b-9a97-2745-06a4-560a75720aa5.png)


## 関連情報

On-prem command-line scriptsコネクタではInput parametersの指定や実行可能なコマンドをホワイトリストで管理する等、より詳細な設定も行えます。詳しくは、以下の内容をご参照ください。

https://docs.workato.com/connectors/on-prem-command-line-scripts.html

# 最後に

On-prem Agentを利用することで、オンプレ上の様々なリソースをWorkatoから利用できることや、オンプレを踏み台としたHTTPアクセスが行えることがご理解いただけたものと思います。ここでは書ききれていませんが、オンプレ上のDBサーバやアプリケーションへのアクセスも可能です。オプション機能ではありますが、Workatoから試していただくことは可能ですので、宜しければ是非お試しください。