Exastro ITA2.4 OASE メニュー連携機能を使ってみた

今回はExastro IT Automation (以下ITA)の機能の１つであるOASE連携機能を使ってみたいと思います。

### はじめに
OASEとは、外部から取得したイベント情報を分析し、そのイベントへの対処の自動化を支援する機能です。

今回は、RESTにてWebサーバからRESTをOASEに通知し、
Apache（httpd）のサービスが停止したという通知をOASEが受けたことで、サービスを起動するAnsibleの処理がConductorによって自動的に動く、というシナリオを想定しITAを使っていきたいと思います。
![スクリーンショット 2024-06-05 175722.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3800064/f348488f-c0d1-4fde-420b-395aa09218c6.png)


## 1.ITA設定
#### サービス起動処理の登録
AnsibleL-egacy/Playbook素材集にあるSystem_service_started.ymlを使用します。
![スクリーンショット 2024-05-30 140336.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3800064/b00f5dd8-d0aa-19ed-0013-30ecd38b2342.png)
必要な設定は
・オペレーション登録
・Movement登録
・Ansible Playbook登録
・パラメータシート作成
・MovementとAnsible Playbook紐付け
・パラメータシートの項目とAnsible Playbookの変数の紐付け
・パラメータ設定
・機器登録
・Conductor設定
となります。

詳しい操作方法は[ITAマニュアル](https://ita-docs-staging.exastro.org/ja/2.4/manuals/index.html)参照


Conductor一覧にサービス起動のConductorを登録できたらサービス起動処理側の準備はOKです。
![スクリーンショット 2024-06-03 180743.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3800064/9c00451b-acfd-f6c0-5e0b-878626e5616c.png)


## 2.OASE設定
今回は以下コマンドを打ち、イベントを発生させるというシナリオに基づき設定していきます。
```sh
curl -X POST -k   'http://*.*.*.*/api/org001/workspaces/ws001/oase_agent/events' \
   -H "Authorization: Basic ****************=" \
   -H 'accept: application/json' \
   -H 'Content-Type: application/json' \
   -d '{
    "events": [
      {
        "event": [
          {
            "hostname": "webserver",
            "service": "httpd",
            "status": "down"
          }
        ],
        "event_collection_settings_name": "エージェント不使用"
      }
    ]
  }'`
```

#### エージェント
OASE管理→エージェントを選択して
イベント収集設定名、接続方式ともにエージェント不使用を記載していきます、今回はREST APIでイベントを通知するためエージェント不使用を選択します。
![スクリーンショット 2024-05-30 141410.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3800064/47ef6745-6fd1-7e28-c573-5e17bfc79ad4.png)
#### ラベル作成
ラベル作成ではキーワードの設定を行います。
OASE→ラベル→ラベル作成よりラベルを２つ作成します。ラベルキーはserviceとstatusを指定します。カラーコードは２つのラベルで違う色にした方が見やすいのでよさそうです。設定内容は以下です

| ラベルキー | カラーコード | 
| ------- | ------- | 
| service    | (任意の値)   | 
| status    | (任意の値)   |

![スクリーンショット 2024-06-03 181828.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3800064/4a03fc5e-f88a-c19c-1b7c-eca4ea1eb617.png)

#### ラベル付与
OASE→ラベル→ラベル付与もserviceとstatusで２レコード作成します。
設定は画像参照。
![スクリーンショット 2024-05-30 142402.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3800064/75fc7896-8247-dd95-9e4c-cccc36c21182.png)

![スクリーンショット 2024-05-30 142616.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3800064/31c59d19-d9e3-39b8-856e-5aaaea80c1c1.png)

#### フィルタ
OASE→ルール→フィルタにはhttpdというサービスが落ちた時、という条件を指定します。
![スクリーンショット 2024-05-30 142830.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3800064/cb72509a-4c5b-f0a8-91db-b678aefcfa61.png)
#### アクション
OASE→ルール→アクションには作成したサービス起動の処理が動くよう設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3800064/65837f0f-7fba-5edf-d3ed-d56cd56451f8.png)
#### ルール
OASE→ルール→ルールでフィルターとアクションの紐づけ設定を行います。
![スクリーンショット 2024-05-30 143416.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3800064/025df79d-74cf-a238-35c3-f2cb8b83682d.png)

![スクリーンショット 2024-
05-30 143503.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3800064/a79ddc1a-230d-8bbb-ec70-7401f109281b.png)

以上でOASEの設定は完了です。

## 3.サービス停止
サービス起動処理が正しく動くか確認するためにWebサーバのhttpdのサービスを停止しておきます。サービスがinactiveになっていることを確認しました。
 
![スクリーンショット 2024-05-31 171528.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3800064/777051b0-c96c-2b98-c7be-30d07f108476.png)

## 4.イベント発生
以下コマンドを打ち、イベントを発生させます。

画像の青マーキング部分はITAサーバのIPアドレス、
赤マーキング部分にはITAのワークスペースにログインする際のユーザー名、パスワードをbase64エンコードした値を指定します。以下のコマンドで確認できます。
    ```
    echo -n "ユーザー名:パスワード" | base64
    ```
![スクリーンショット 2024-06-18 182139.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3800064/c17da8ef-9063-4855-919b-d8ca97ec62a2.png)



画像のようにmessage欄にSUCCESSと出たらコマンド成功です。

## 5.結果確認
OASE→イベントフローで事前に設定したルールが適用され、結論イベントの発生まで確認できました。上からイベント。ルール、アクション、結論イベントと4つ確認出来たら正常終了です。
![スクリーンショット 2024-05-31 180117.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3800064/31973a94-e326-5e60-aac2-7fdbaff872b0.png)

OASE→ルール→評価結果でサービス起動処理の結果を確認できます。ステータスが完了なので正常終了したことを確認できました。
![スクリーンショット 2024-05-31 182210.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3800064/31225888-18ce-22b9-2756-30a5f9a063b0.png)

サービスもactiveになっていることが確認できました。
![スクリーンショット 2024-05-31 182456.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3800064/435be0d5-ef04-7d90-33cc-7a071f40a568.png)

## 6.まとめ
今回はRESTを使用して基礎的なExastro OASE ITAメニュー連携機能を[ITAマニュアル](https://ita-docs.exastro.org/ja/2.4/manuals/oase/index.html)を参照しながら実行してみました。次回はメールサーバとの連携を行ってみようと思います。