Exastro IT Automation(ver2.4.0)のlearnをやってみた Ansible Legacy編 その①

※本シナリオに入る前に、[Exastro IT Automation(ver2.4.0)のクイックスタートをやってみた(Ansible Legacy)](https://qiita.com/a-naka/items/2375721182ba783db0fe) を完了させておくことを推奨します。

# はじめに
#### Exastro IT Automationとは
システム構成(IaC+パラメータ)を管理するためのフレームワークです。
[【Exastro-suite】](https://ita.exastro.org/)より

今回はパッケージのインストールやアンインストールといったパッケージ管理を自動化して行きたいと思います。
手順については、[Learn Ansible Legacy](https://ita-docs.exastro.org/ja/2.4/learn/ansible_legacy/Legacy_scenario2.html#id1) を参考にしました。



今回は、以下のPlaybookを使用します。
文字コードは「UTF-8」、改行コードは「LF」、拡張子は「yml」形式で作成してください。
※ファイルアップロードができなかったり、実行エラーが発生するため、インデントにご注意ください。

```yml:package.yml
---
- name: install package
  yum:
    state: installed
    name: "{{ item.0 }}"
  with_together:
    - "{{ pkg_name }}"
    - "{{ action }}"
  when: item.1 == 'present'

- name: uninstall package
  yum:
    state: removed
    name: "{{ item.0 }}"
  with_together:
    - "{{ pkg_name }}"
    - "{{ action }}"
  when: item.1 == 'absent'
```


以下のように、公式ドキュメントにあるシナリオを3回に分けて実施していきます。
パッケージ管理
[Exastro IT Automation(ver2.4.0)のlearnをやってみた Ansible Legacy編 その①](https://qiita.com/a-naka/items/5063fa19a955ee13c4e1)

ジョブフロー
[Exastro IT Automation(ver2.4.0)のlearnをやってみた Ansible Legacy編 その②](https://qiita.com/a-naka/items/f761bde061b6d2cd2d10)

ユーザー管理
[Exastro IT Automation(ver2.4.0)のlearnをやってみた Ansible Legacy編 その③](https://qiita.com/a-naka/items/aab1096afe58dc5f07a1)

# 作業環境
前回同様、以下の環境で進めていきます。

![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/0efeef52-9e59-f5b6-d0b6-d1e047d29479.png)


- Exastro IT Automation 2.4.0
- RHEL8(ITAサーバ用)
- RHEL8(ターゲットマシン用)
- Windows10(クライアント)
- Google Chrome(Win10側)

# シナリオ
自動化するための作業には、事前準備として1度だけ実施すべき作業と、繰り返し実施する作業があります。
今回のシナリオでは、1～8が事前準備にあたり。9～13と14～18は繰り返し実施する作業にあたります。

【事前準備】
1.データシートの作成
2.パラメータシートにデータを登録
3.パラメータシートの作成
4.ジョブ(Movement)の登録
5.Ansible Playbookの登録
6.ジョブ(Movement)とAnsible Playbookの紐付け
7.パラメータシートの項目とPlaybookの変数を紐付け
8.機器一覧にターゲットマシンを登録(未実施の場合は[Ansible Legacyのクイックスタート](https://qiita.com/a-naka/items/2375721182ba783db0fe#6%E6%A9%9F%E5%99%A8%E4%B8%80%E8%A6%A7%E3%81%AB%E3%82%BF%E3%83%BC%E3%82%B2%E3%83%83%E3%83%88%E3%83%9E%E3%82%B7%E3%83%B3%E3%82%92%E7%99%BB%E9%8C%B2)を参照)

【作業実行1回目】
9.作業名(オペレーション)の登録
10.パラメータシートにデータを登録
11.事前確認
12.作業実行
13.実行結果の確認

【作業実行2回目】
14.作業名(オペレーション)の登録
15.パラメータシートにデータを登録
16.事前確認
17.作業実行
18.実行結果の確認



# 事前準備

### 1.データシートの作成
データシートを作成します。
「パラメータシート作成」メニューグループ　→　「パラメータシート定義・作成」メニューを選択します。

![画像37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/8eaca7e0-a165-1037-5a6c-88922283f51e.png)

以下のように登録しました。
|設定項目|項目1設定値|
|:---:|:---:|
|項目の名前|present_absent|
|項目の名前(Rest API用)|present_absent|
|入力方式|文字列(単一行)|
|最大バイト数|16|
|必須|✓|
|一意制約|✓|


![画像38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/7d3751e1-f684-890e-dbf0-47f7124f7092.png)

以下のように登録しました。
|設定項目|設定値|
|:---:|:---:|
|パラメータシート名|状態|
|パラメータシート名(REST用)|state|
|作成対象|データシート|
|表示順序|99999|


入力後、作成をクリックします。

### 2.パラメータシートにデータを登録
「入力用」メニューグループ　→　「状態」→　「登録」を選択します。


![画像39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/48c5a5d9-c598-fae3-6ecd-90e5fd221553.png)

以下のように登録しました。
|present_absent|備考|
|:---:|:---:|
|present|インストール|
|absent|アンインストール|

入力後は、「編集確認」　→　「編集反映」をクリックします。



### 3.パラメータシートの作成
パラメータシートを作成します。
「パラメータシート作成」メニューグループ　→　「パラメータシート定義・作成」メニューを選択します。
![画像40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/9c3629b6-80ab-5104-46f1-d9e92bc96231.png)




以下のように登録しました。
|設定項目|項目1設定値|項目2設定値|
|:---:|:---:|:---:|
|項目の名前|パッケージ名|状態|
|項目の名前(Rest API用)|package_name|state|
|入力方式|文字列(単一行)|プルダウン選択|
|最大バイト数|64|(項目なし)|
|正規表現||(項目なし)|
|選択項目|(項目なし)|入力用:present-absent|
|参照項目|(項目なし)||
|必須|✓|✓|



![画像41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/319252ab-ee02-4862-6a75-d8229ede17e5.png)

以下のように登録しました。
|設定項目|設定値|
|:---:|:---:|
|パラメータシート名|導入パッケージ|
|パラメータシート名(REST用)|packages|
|作成対象|パラメータシート（ホスト/オペレーションあり）|
|表示順序|2|
|バンドル|「利用する」に✓をいれる|


### 4.ジョブ(Movement)の登録
ジョブ(Movement)の登録を行います。
「Ansible-Lagacy」メニューグループ　→　「Movement一覧」メニューを選択します。

![画像43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/9fe839af-7832-d265-8a37-06ec6d75deca.png)

以下のように登録しました。
|Movement名|ホスト指定形式|
|:---:|:---:|
|パッケージ管理|IP|

入力後は、「編集確認」　→　「編集反映」をクリックします。


### 5.Ansible Playbookの登録
playbookを登録します。
「Ansible-Lagacy」メニューグループ　→　「Playbook素材集」メニュー　→「登録」をクリックし、事前に準備しておいた「package.yml」をアップロードします。
![画像44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/2337b500-5a14-6819-92c1-fe650cb0346e.png)



以下のように登録しました。
|Playbook素材名|Playbook素材|
|:---:|:---:|
|package|package.yml|

入力後は、「編集確認」　→　「編集反映」をクリックします。


### 6.ジョブ(Movement)とAnsible Playbookの紐付け
「Ansible-Lagacy」メニューグループ　→　「Movement-Playbook紐付」メニュー　→　「登録」を選択します。

![画像45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/32aa94f2-9914-e3f1-7697-f68ab2ad9df4.png)


以下のように登録しました。
|Movement名|Playbook素材|インクルード順序|
|:---:|:---:|:---:|
|パッケージ管理|package.yml|1|

入力後は、「編集確認」　→　「編集反映」をクリックします。



### 7.パラメータシートの項目とPlaybookの変数を紐付け
「Ansible-Lagacy」メニューグループ　→　「代入値自動登録設定」メニューを選択します。
「ダウンロード・ファイル一括登録」タブから「新規登録用ダウンロード(Excel)」をクリックし、フォーマットをダウンロードします。
![画像46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/b27b54d4-e85b-9b08-13d1-9aa20ca3f80f.png)


ダウンロードしたフォーマットを開き、行を追加します。(今回は20行分入力します。)
C列(実行処理種別)のプルダウンは「登録」を選択し、その他の列は
[Ansible Legacy Learnのパッケージ管理](https://ita-docs.exastro.org/ja/2.4/learn/quickstart/legacy/Legacy_scenario2.html)
からコピーしてフォーマットにペーストします。


「ファイル一括登録」　→　「一括登録開始」をクリックします。
![画像47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/fd1da04b-e9db-1eb5-35ff-ba1bf06f9887.png)


### 8.機器一覧にターゲットマシンを登録
下記の「実施作業2回目 ホスト名登録」を参照。
[Exastro IT Automation(ver2.4.0)のlearnをやってみた Ansible Legacy編 その①](https://qiita.com/a-naka/private/aecfb010fe01ec1df45b)

# 作業実行1回目

### 9.作業名(オペレーション)の登録
「基本コンソール」メニューグループ　→　「オペレーション一覧」メニュー　→　「登録」選択します。
![画像48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/67034641-29f1-47ba-158c-a635c2377919.png)


以下のように登録しました。
|オペレーション名|実施要諦日時|
|:---:|:---:|
|RHEL8のパッケージ管理|2024/04/02 12:00:00|

入力後は、「編集確認」　→　「編集反映」をクリックします。


### 10.パラメータシートにデータを登録
「入力用」メニューグループ　→　「導入パッケージ」　→　「登録」を選択します。

![画像50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/bee52f25-e103-4b7c-dd9c-9328fa5a0b89.png)


以下のように登録しました。
|ホスト名|オペレーション名|代入順序|パッケージ名|状態|
|:---:|:---:|:---:|:---:|:---:|
|db01|2024/04/02 12:00:00_RHEL8のパッケージ管理|1|postgresql-server|present|

入力後は、「編集確認」　→　「編集反映」をクリックします。



### 11.事前確認
実行する前に現在の状態を確認します。
```
#実行コマンド
rpm -q postgresql-server
```

```
# 結果
package postgresql-server is not installed
```


### 12.作業実行
「Ansible-Lagacy」メニューグループ　→　「作業実行」メニュー　→　「パッケージ管理」　→　「作業実行」を選択します。
![画像51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/25442b89-f5c7-1028-f5b3-6182709b82ad.png)


実行するオペレーションを選択し、作業実行をクリックします。
![画像52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/27d8d12e-f2fc-d90a-bf6d-a736b0eb3e5e.png)




### 13.実行結果の確認
再度サーバに SSH ログインし、ホスト名が変更されていることを確認します。
```
#実行コマンド
rpm -q postgresql-server
```

```
# 結果(環境ごとにバージョンは異なります)
postgresql-server-10.23-1.module+el8.7.0+17280+3a452e1f.x86_64
```


# 作業実行2回目
### 14.作業名(オペレーション)の登録
「基本コンソール」メニューグループ　→　「オペレーション一覧」メニュー　→　「登録」選択します。

![画像54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/2fddd2b3-9fd9-be7e-30f5-ea363914687b.png)



以下のように登録しました。
|オペレーション名|実施予定日時|
|:---:|:---:|
|RHEL8のパッケージ変更|2024/04/05 12:00:00|

入力後は、「編集確認」　→　「編集反映」をクリックします。



### 15.パラメータシートにデータを登録
「入力用」メニューグループ　→　「導入パッケージ」メニュー　→　「登録」選択します。
![画像53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/af4beed5-78e3-535d-d979-0e9df0c93745.png)

以下のように登録しました。
|ホスト名|オペレーション名|代入順序|パッケージ名|状態|
|:---:|:---:|:---:|:---:|:---:|
|db01|2024/04/05 12:00:00_RHEL8のパッケージ変更|1|postgresql-server|absent|
|db01|2024/04/05 12:00:00_RHEL8のパッケージ変更|2|mariadb-server|present|

入力後は、「編集確認」　→　「編集反映」をクリックします。



### 16.事前確認
実行する前に現在の状態を確認します。
```
#実行コマンド
rpm -q postgresql-server
```

```
# 結果(環境ごとにバージョンは異なります)
postgresql-server-10.23-1.module+el8.7.0+17280+3a452e1f.x86_64
```

```
#実行コマンド
rpm -q mariadb-server
```

```
# 結果
package mariadb-server is not installed
```


### 17.作業実行
「Ansible-Lagacy」メニューグループ　→　「作業実行」メニュー　→　「パッケージ変更」　→　「作業実行」を選択します。


実行するオペレーションを選択し、作業実行をクリックします。
![画像56.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/1b9bc4c1-ef8a-435f-632c-4c67f8aee745.jpeg)



### 18.実行結果の確認
再度サーバに SSH ログインし、ホスト名が変更されていることを確認します。
```
#実行コマンド
rpm -q postgresql-server
```

```
# 結果
package postgresql-server is not installed
```

```
#実行コマンド
rpm -q mariadb-server
```

```
# 結果(環境ごとにバージョンは異なります)
mariadb-server-10.3.35-1.module+el8.6.0+15949+4ba4ec26.x86_64
```


# おわりに
今回は、Ansible 3モードの1つであるAnsible-Legacyを使用し、パッケージのインストールやアンインストールを自動化しました。

次回は複数のジョブを一連の流れで実行する作業を自動化したいと思います。

次回：ジョブフロー
[Exastro IT Automation(ver2.4.0)のlearnをやってみた Ansible Legacy編 その②](https://qiita.com/a-naka/items/f761bde061b6d2cd2d10)