Exastro IT Automationのキホンの”キ”

関連リンク

+ [Exastro IT Automationをインストールしてみた（v1.7.0）](https://qiita.com/standsetx/items/54ff0786db151d980026)
+ [Exastro IT Automation クイックスタート (ver1.7.0)](https://qiita.com/y-masaya3210/items/a6d59b3aca0031128ab7)
+ [Exastroコミュニティ](https://exastro-suite.github.io/it-automation-docs/ind
ex_ja.html)
+ [利用手順マニュアル メニュー作成機能](https://exastro-suite.github.io/it-automation-docs/asset/Documents_ja/Exastro-ITA_利用手順マニュアル_メニュー作成機能.pdf)

#はじめに

***この記事はITAver1.4.1をベースに紹介しています。
2020年7月31日にITAver1.5.0がリリースされており、多くの機能が追加されています。
同じシナリオですが、ITAver1.5.0で実施している記事は[コチラ](https://qiita.com/wakky0328/items/cf29c22cbf7cb42d462b)になります。***

今回の記事ではExastro IT Automation(以下ITAと表記)のWeb画面を使って、CMDBを設定し、Ansible Playbook(以下、playbook)と連動させた自動作業をご紹介します。

ITAをまだインストールしていない場合は、関連リンクの[Exastro IT Automationインストール](https://qiita.com/standsetx/private/e5658a957b64f52a8e48)をお試しください。

今回は[Exastro IT Automationインストール](https://qiita.com/standsetx/private/e5658a957b64f52a8e48)で作成したシステム管理者(administrator)で操作します。

###作業環境

***

+ Exastro IT Automation 1.4.1
+ CentOS Linux 7.8(ITAサーバ用)
+ CentOS Linux 7.8(ターゲットマシン用)×2
+ Windows 10(クライアント)
+ Google Chrome 83.0.4103.116(Win10側)

***

2台のターゲットサーバにそれぞれ異なるディレクトリを作成します。

![環境.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/a6795a35-b4f1-47fe-7ad1-f8f356011a12.png)

#今回紹介するシナリオ

まず、Playbookを実行できるようにします。
次に、CMDBにパラメータシートを設定し、データを登録します。
そして、パラメータシートとPlaybookの変数を紐付け、ジョブフロー(Symphony)を実行します。

1. Playbookをアップロードしてジョブ(Movement)に紐付ける
2. ジョブ(Movement)をジョブフロー(Symphony)に組み込む
3. ITAのCMDBの機器一覧(デフォルト)にターゲットとなるLinuxマシンを登録
4. 作業名(Operation)の登録
5. CMDBにパラメータシートを設定
6. パラメータシートにデータを登録
7. パラメータシートの項目とPlaybookの変数の紐づけ
8. ジョブフロー(Symphony)の実行
9. 実行結果の確認

![シナリオ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/8d368a64-1c24-5ef6-d352-589b850ab2f7.png)

今回は以下のPlaybookを利用します。

```yml:mkdir.yml
- name: Make Directory
  file:
    path: "{{ VAR_dir_name }}"
    owner: "{{ VAR_owner }}"
    group: "{{ VAR_group }}"
    mode: "{{ VAR_mode }}"
    state: directory
```


##1. Playbookをアップロードしてジョブ(Movement)に紐付ける
###1.1 Movementを登録
「Ansible-Legacy 」メニューグループ >> 「Movement一覧」メニュー
を選択し、登録します。

登録したデータは以下です。

|Movement名|ホストして形式|
|:---:|:---:|
|ディレクトリ作成|IP|

![図3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/41eb3d4e-bb46-728e-b1dd-a93b4589da4f.png)

###1.2 Playbookアップロード
「Ansible-Legacy 」メニューグループ >> 「プレイブック素材集」メニュー
を選択し、用意した```mkdir.yml```をプレイブック素材にアップロードを行います。

登録するデータは以下です。

|プレイブック素材名|プレイブック素材|
|:---:|:---:|
|mkdir|*mkdir.yml*|

![図4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/c74cbe09-e003-f163-852a-4592cd82fb87.png)

<details><summary>ファイルをアップロードするときのハマりどころ</summary><div>
playbookをアップロードする際には、事前アップロードボタンを押してから登録ボタンを押す必要があります。
![図5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/68ddcc4b-c6b4-643c-6474-ae25678772db.png)
</div></details>

###1.3 アップロードしたplaybookをMovementに紐付け
「Ansible-Legacy 」メニューグループ >> 「Movement詳細」メニュー
を選択し、登録します。

登録するデータは以下です。

|Movement|プレイブック素材|インクルード順序|
|:---:|:---:|:---:|
|1:ディレクトリ作成|dir-make|1|

![図6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/c8a04c96-18ff-f310-3bf1-b2bb274bf7c5.png)

**<details><summary>インクルード順序って何？</summary><div>
今回のシナリオでは１ジョブ(Movement)に対して1つのplaybookを紐付けましたが、
１つのジョブ(Movement)に複数のplaybookを紐づけられます。
playbookが様々なジョブ(Movement)に再利用できます。
![図7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/007ec890-80dd-f4ad-58f3-0c8840f6b806.png)
</div></details>**

##2. ジョブ(Movement)をジョブフロー(Symphony)に組み込む
「基本コンソール」メニューグループ >> 「Symphonyクラス編集」メニュー
を選択し、Symphony名称を設定し、右側のフィールドからMovementをドラッグ＆ドロップします。

![図8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/351e5a5b-2327-8654-ca73-ba95c0ad202f.png)

##3. ITAのCMDBの機器一覧(デフォルト)にターゲットとなるLinuxマシンを登録
「基本コンソール」メニューグループ >> 「機器一覧」メニュー
を選択し、登録します。

登録するデータは以下です。

|HW機器種別|ホスト名|IPアドレス|ログインユーザID|ログインパスワード<br>管理|ログインパスワード|Legacy/Role利用情報<br>認証方式|
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|SV|target101|10.197.18.77|root|●|********|パスワード認証|
|SV|target102|10.197.18.79|root|●|********|パスワード認証|

![図9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/eefd1511-655b-7733-3d6e-72113da32857.png)

##4. 作業名(Operation)の登録
「基本コンソール」メニューグループ >> 「投入オペレーション一覧」メニュー
を選択し、登録します。

登録するデータは以下です。

|オペレーション名|実施予定日時|
|:---:|:---:|
|ディレクトリ作成作業|2020/07/20 14:00|

![図10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/9626cb6b-5b6c-a467-8a4a-1f781582d1d3.png)

##5. CMDBにパラメータシートを設定

ところで、ITAのメニューグループとメニューの関係について、改めて整理してみました。
下図のように、メニューグループ内にたくさんのメニューが入っていて、
メニュー＝パラメータシートと考えてよいと思います。

![図11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/5486578d-2b1d-ef4f-c171-6e363035967f.png)

今回、新しいパラメータシートを設定する、つまりメニューを作ることになります。
作成するメニューにはその置き場となるメニューグループが必要ですので、
まずはメニューグループを登録します。
それから、メニュー(＝パラメータシート)を設定します。

![図12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/9320dac3-a918-263a-15d9-a745b18139ee.png)

詳しくは、ITAの[利用手順マニュアル メニュー作成機能](https://exastro-suite.github.io/it-automation-docs/asset/Documents_ja/Exastro-ITA_利用手順マニュアル_メニュー作成機能.pdf)を参照ください。

###5-1. パラメータシートを所属させるメニューグループを用意する

「管理コンソール」メニューグループ >> 「メニューグループ管理」メニュー
を選択し、登録します。

登録するデータは以下です。
後程パラメータシートを作成する際に参照用に所属させるメニューグループも合わせて作成しておきます。

|メニューグループ名称|表示順序|
|:---:|:---:|
|サーバ基本設定|1|
|サーバ基本設定(参照用)|2|

![図13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/d6af6a12-d99c-a9cf-0d52-823186c11dd0.png)

<details><summary>参照用って何？</summary><div>
パラメータシートを作成すると、データ登録するメニューと合わせて参照用のメニューが自動で作成されます。
参照用メニューは閲覧専用のメニューで、データ登録されたメニューに登録されているオペレーション日時から指定した日付における最新の登録データを参照できるメニューです。
ITAでCMDBを作成する際に自動で作成されます。
![図14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/f8440e26-f106-9e25-f2d7-5022fe31bb1e.png)
</div></details>

<details><summary>メニューグループのパネル画像を自作できる</summary><div>
メニューグループ管理にはパネル画像を自作する機能がついています。
![図15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/1ddd4f6b-cff9-bc95-7159-8cae0fda4cfa.png)
詳細は[利用手順マニュアル 管理コンソール](https://exastro-suite.github.io/it-automation-docs/asset/Documents_ja/Exastro-ITA_利用手順マニュアル_管理コンソール.pdf)を参照ください。
</div></details>

***

###5-2. パラメータシートのメニュー名を定義する
「メニュー作成」メニューグループ >> 「メニュー作成情報」メニュー
を選択し、登録します。

登録するデータは以下です。

|メニュー名|作成対象|表示順序|用途|ホスト用メニューグループ|参照用メニューグループ|
|:---:|:---:|:---:|:---:|:---:|:---:|
|ディレクトリ設定|パラメータシート(ホスト/オペレーション含む)|1|ホスト用|サーバ基本設定|サーバ基本設定(参照用)

![図16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/e5133fc8-3c14-73d0-5657-28a0d9c81b34.png)

***

###5-3. パラメータシートの項目名を定義する
「メニュー作成」メニューグループ >> 「メニュー項目作成情報」メニュー
を選択し、登録します。

登録するデータは以下です。
単一行以外の表記については、[利用手順マニュアル メニュー作成機能](https://exastro-suite.github.io/it-automation-docs/asset/Documents_ja/Exastro-ITA_利用手順マニュアル_メニュー作成機能.pdf)に記載がありますが、今後、パラメータシートの作成詳細編を記事公開したいと思います。

|メニュー名|項目名|表示順序|入力方式|文字列(単一行)<br>最大バイト数|
|:---:|:---:|:---:|:---:|:---:|
|ディレクトリ設定|path|1|文字列(単一行)|32|
|ディレクトリ設定|owner|2|文字列(単一行)|32|
|ディレクトリ設定|group|3|文字列(単一行)|32|
|ディレクトリ設定|mode|4|文字列(単一行)|32|

![図17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/77127e39-9d59-9907-3b5a-772fa5d1fcf7.png)

***

###5-4. 定義したメニュー名/項目名でパラメータシートを作成する

先に説明したとおり、メニュー＝パラメータシートですので、
メニューを作成することになります。

「メニュー作成」メニューグループ >> 「メニュー作成実行」メニュー
を選択し、作成するメニュー名のチェックボックスを選択し、「メニュー作成開始」ボタンを押します。

![図18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/f3ea52fa-4227-ff1f-adfd-edb40c2cbad6.png)

ここで、「メニュー作成管理」ボタンを押すと、実行ステータスを確認できます。
ステータスが完了の場合、「作成したメニュー」ボタンを押すと、作成したメニューに遷移することができます。

![図19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/b5b1ba29-ffa2-cac5-2c52-ccac6b66c12a.png)

<details><summary>メニューを再作成するときのハマりどころ</summary><div>
既存のメニューに対してメニュー作成開始ボタンを押下すると、メニューの再作成として、登録済みのデータは削除されます。
</div></details>

##6. パラメータシートにデータを登録
いよいよターゲットマシンに設定するデータの登録を行います。
データの登録先は前の手順で設定したパラメータシートです。

「サーバ基本設定」メニューグループ >> 「ディレクトリ設定」メニュー
を選択し、登録します。

登録するデータは以下です。

|ホスト名|オペレーション|path|owner|group|mode|
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|target101|2020/07/20 13:00_1:ディレクトリ作成作業|/work1|root|root|0644|
|target102|2020/07/20 13:00_1:ディレクトリ作成作業|/work2|root|root|0755|

![図20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/d5f50c37-a171-0bbb-69e1-ca80a79fa9e3.png)

##7. パラメータシートの項目とPlaybookの変数の紐付け
パラメータシートの項目とPlaybookの変数を紐付けました。
一度紐付け設定を行っておけば、パラメータシートにデータを登録するだけで、Playbook実行時に登録データが利用できます。

「Amsible-Legacy」メニューグループ >> 「代入値自動登録設定」メニュー
を選択し、登録します。

登録するデータは以下です。

|メニューグループ:メニュー|項目|登録方式|Movement|Value変数<br>変数名|
|:---:|:---:|:---:|:---:|:---:|
|1:サーバ基本設定:1:ディレクトリ設定|パラメータ/path|Value型|1:dir-make|1:VAR_dir_name|
|1:サーバ基本設定:1:ディレクトリ設定|パラメータ/owner|Value型|1:dir-make|2:VAR_owner|
|1:サーバ基本設定:1:ディレクトリ設定|パラメータ/group|Value型|1:dir-make|3:VAR_group|
|1:サーバ基本設定:1:ディレクトリ設定|パラメータ/mode|Value型|1:dir-make|4:VAR_mode|

![図21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/4c4cc233-d121-0c2e-48f0-8a5f93221d1e.png)

##8. ジョブフロー(Symphony)の実行
最後に、ターゲットマシンへ登録データを設定します。

「基本コンソール」メニューグループ >> 「Symphony作業実行」メニュー
を選択し、作成したジョブフロー(Symphony)と作業名(Operation)のラジオボタンを選択し、実行ボタンをクリックします。

![図22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/24526007-51ca-fdeb-575f-1f2e85176be0.png)

ジョブ(Movement)をクリックすると詳細を確認することができます。
詳細画面のInputDataから実行時のplaybook一式(host_varsやinventryを含む)をダウンロードできます。
また、ResultDataから実行結果をダウンロードできます。

![図23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/cee055ea-6405-34f5-664c-1d47435d8a3e.png)

ジョブフロー(Symphony)が正常終了すると、以下の画面が表示されターゲットマシンへの設定も完了です。

![図24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/a588d497-7987-b8ab-10f0-f1dfdcfa53f7.png)

##9. 実行結果の確認
パラメータシートに登録したデータが反映できているか確認しました。
ターゲットマシンに接続して、作成したディレクトリを確認しました。

```言語:target101
$ ll / | grep work
drw-r--r--    2 root root    6 Jul 14 09:33 work1
```

```言語:target102
$ ll / | grep work
drwxr-xr-x    2 root root    6 Jul 14 09:33 work2
```

パラメータシートに登録したデータが設定されていることを確認できました。

#まとめ
今回はITAのパラメータシートを活用して、2台のターゲットマシンのディレクトリ作成を行います。
通常、ディレクトリ作成はloopモジュールを使って再帰的に作成できるように書きますが、
今回はシンプルに1つ作成します。
次は複雑なPlaybookとそれに対するITAでのメニュー構成を紹介したいと思います。

#関連リンク
+ [Exastro IT Automationインストール](https://qiita.com/standsetx/private/e5658a957b64f52a8e48)
+  [Exastro IT Automationを実際に動かしてみた(クイックスタート)](https://qiita.com/standsetx/items/902ea7eeac2c0f0347a2)
+ [Exastroコミュニティ](https://exastro-suite.github.io/it-automation-docs/ind
ex_ja.html)
+ [利用手順マニュアル メニュー作成機能](https://exastro-suite.github.io/it-automation-docs/asset/Documents_ja/Exastro-ITA_利用手順マニュアル_メニュー作成機能.pdf)