Exastro IT Automation ver1.5.0のキホンの"キ"

関連リンク

+ ~~[Exastro IT Automationインストール(v1.5.0)](https://qiita.com/standsetx/items/c0e4ed7c6a2c34b2f068)~~ [Exastro IT Automationをインストールしてみた（v1.7.2）](https://qiita.com/standsetx/items/54ff0786db151d980026)
+ ~~[Exastro IT Automationを実際に動かしてみた(クイックスタート)](https://qiita.com/standsetx/items/902ea7eeac2c0f0347a2)~~ [Exastro IT Automation クイックスタート (ver1.7.2)](https://qiita.com/y-masaya3210/items/a6d59b3aca0031128ab7)
+ [Exastroコミュニティ](https://exastro-suite.github.io/it-automation-docs/index_ja.html)
+ [利用手順マニュアル メニュー作成機能](https://exastro-suite.github.io/it-automation-docs/asset/Documents_ja/Exastro-ITA_利用手順マニュアル_メニュー作成機能.pdf)
+ [Exastro IT Automationのキホンの”キ”](https://qiita.com/wakky0328/items/136ee1009edfdde03375)

#はじめに
2020/07/31にExastro IT Automation ver1.5.0(以下ITAver1.5.0)がリリースされました。
パラメータシートが感覚的に作成できるようになり、より高度なジョブフローを作成できるConductorが搭載されました。
前回紹介した記事[Exastro IT Automationのキホンの”キ”](https://qiita.com/wakky0328/items/136ee1009edfdde03375)をITAver1.5.0で実施してみたいと思います。
今回の記事でもExastro IT Automation(以下ITAと表記)のWeb画面を使って、CMDBを設定し、Ansible Playbook(以下、playbook)と連動させた自動作業をご紹介します。

playbookを実行するにあたり、ITAに必要なデータを登録する【仕込編】と、実際に実行する【実行編】の両方をご紹介します。
ITAは動作させる１playbookに対して、一度【仕込編】を行えば、その後パラメータを変更して実行する際には【実行編】のみ実施すればよいソフトウェアとなっています。


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

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

###作業環境

***

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

***

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




#今回紹介するシナリオ

まず、Playbookを実行できるようにし、パラメータシートとPlaybookの変数を紐付けを行います。
次に、CMDBにパラメータシートを設定し、データを登録します。
そして、高度なジョブフロー(Conductor)を実行します。
新機能のところだけ知りたい方は[【仕込編】2. ジョブ(Movement)をジョブフロー(Conductor)に組み込む](https://qiita.com/wakky0328/private/cf29c22cbf7cb42d462b#2-%E3%82%B8%E3%83%A7%E3%83%96movement%E3%82%92%E3%82%B8%E3%83%A7%E3%83%96%E3%83%95%E3%83%AD%E3%83%BCsymphony%E3%81%AB%E7%B5%84%E3%81%BF%E8%BE%BC%E3%82%80) と[【仕込編】3. CMDBにパラメータシートを設定](https://qiita.com/wakky0328/items/cf29c22cbf7cb42d462b#%E4%BB%95%E8%BE%BC%E7%B7%A83-cmdb%E3%81%AB%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%82%B7%E3%83%BC%E3%83%88%E3%82%92%E8%A8%AD%E5%AE%9A)を見ていただければよいです。

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

![図2-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/fe0e0a6a-7e51-490a-a8d0-2381da5e1c92.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:ディレクトリ作成|mkdir|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)に再利用できます。
![図2-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/befa031f-c70b-c98c-2e6d-d239a6985e36.png)
</div></details>**

##【仕込編】2. ジョブ(Movement)をジョブフロー(Conductor)に組み込む
「Conductor」メニューグループ >> 「Conductorクラス編集」メニュー
を選択し、Nameを設定し、右側のMovementタブから作成したMovementをドラッグ＆ドロップします。
今回のシナリオでは1つのMovementを扱うのみなので、高度な機能は利用しませんが、
functionタブには条件分岐や別のジョブフロー(Conductor)を呼び出す部品群がありますので、作成したいジョブフロー(Conductor)に合わせて利用することが可能となっています。

![図2-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/72a401d2-7f2e-9dea-cb43-8f516be46381.png)


##【仕込編】3. CMDBにパラメータシートを設定

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

![図2-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/2d44174d-5ea8-3465-1b66-1083e5fa3ede.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)を参照ください。

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

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

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

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

![図2-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/552695e5-bd29-57d1-b91e-6a598bb6dbac.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>
メニューグループ管理にはパネル画像を自作する機能がついています。
![図2-15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/346890d5-c74f-d5fa-172d-588067b177fe.png)

詳細は[利用手順マニュアル 管理コンソール](https://exastro-suite.github.io/it-automation-docs/asset/Documents_ja/Exastro-ITA_利用手順マニュアル_管理コンソール.pdf)を参照ください。
</div></details>

***

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

下記図の②で登録するデータは以下です。

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

![図2-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/54504279-fe34-94ba-d1ef-17a91e5d6318.png)

![図2-17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/b60db192-dca4-62be-a09f-19ab2d7623b0.png)

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

|項目名|入力方式|最大バイト数|
|:---:|:---:|:---:|
|path|文字列(単一行)|32|
|owner|文字列(単一行)|32|
|group|文字列(単一行)|32|
|mode|文字列(単一行)|32|

![図2-18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/a449b67c-40b6-3719-ea6c-269693e50639.png)


***

###3-3. 作成したパラメータシートを確認する

「メニュー作成」メニューグループ >> 「メニュー作成履歴」メニュー
から作成したパラメータシートを確認します。

![図2-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/964c3757-2f2d-7661-a626-cc5ac74e8b9d.png)

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


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

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

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

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

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


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

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

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

![図2-9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/4d7162d5-6387-3551-147c-83b8555a9b72.png)

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

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

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

![図2-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/128a07a3-ac05-9944-241c-e7ab162cb6bd.png)



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

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

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

|ホスト名|オペレーション|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)



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

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

![図2-23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/610edc50-047b-fe80-8369-34d2cc6946cb.png)

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

![図2-24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/147dd510-dc13-2bfb-7172-7d048c1e7396.png)

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

![図2-25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662076/cdf3db6e-bd89-223c-59be-c9d0ca25f6fa.png)

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

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

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

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

#まとめ
前回紹介した[Exastro IT Automationのキホンの”キ”](https://qiita.com/wakky0328/items/136ee1009edfdde03375)をITAver1.5.0で実施してみました。
大きく変更となる部分は以下2点です。
・パラメータシートが直観的に作成できるようになった。
・Conductorでより高度なジョブフローを定義できるようになった。

本記事では、【仕込編】と【実行編】という区分を設けて、ITAで新規のplaybookを実行する際に、
登録時に一度だけ行う作業を【仕込編】、繰り返し実行する際に行う作業を【実行編】として記載しました。　

今回実施したシナリオは非常にシンプルなシナリオのため、まだパラメータシートの作成やConductorの機能をご紹介しきれていません。
次回実施するシナリオでは、複雑なplaybookやジョブフローを定義し、それらをどうITAで実現するのかをご紹介したいと思います。

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