Exastro IT Automation(ver2.4.0)のクイックスタートをやってみた(Ansible Legacy)

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

今回は5月にリリースされたITAのver2.4を利用して、ITAをすぐに実施できる「クイックスタート」をやってみたいと思います。

ITAの標準的な連携機能であるAnsible Legacyを使って、Linuxサーバのホスト名変更作業を行い、構築作業の自動化を実施します。
手順については、[Ansible Legacyのクイックスタート](https://ita-docs.exastro.org/ja/2.4/learn/quickstart/index.html#id1) を参考にしました。



# 作業環境
今回は、以下の環境で進めていきます。
![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/cf0dc9a6-daf3-233b-051d-b0c791e4a8ca.png)




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



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

![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/2e038675-ca47-322f-196b-89783193a100.png)




【事前準備】
1.パラメータシートの作成
2.ジョブ(Movement)の登録
3.Ansible Playbookの登録
4.ジョブ(Movement)とAnsible Playbookの紐付け
5.パラメータシートの項目とPlaybookの変数を紐付け
6.機器一覧にターゲットマシンを登録

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

【作業実行2回目】
12.パラメータ設定を更新
13.作業名(オペレーション)の登録
14.機器一覧でターゲットマシンの情報を更新
15.事前確認
16.作業実行
17.実行結果の確認



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

### 1.パラメータシートの作成
<details><summary>パラメータシートとは</summary>

システムのパラメータ情報を管理するデータ構造のこと。
詳しくはこちらを参照。→[パラメータシート作成機能](https://ita-docs.exastro.org/ja/2.4/manuals/create_param/menu_creation.html#id1)
</details>
ホスト名を管理するためのパラメータシートを作成します。
「パラメータシート作成」メニューグループ　→　「パラメータシート定義・作成」メニューを選択します。



![画像8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/eebb4fea-559f-09e4-c357-43f2e7c74fa7.png)



項目の設定値は、以下のように登録しました。


|設定項目|項目1設定値|
|:---:|:---:|
|項目の名前|ホスト名|
|項目の名前(Rest API用)|hostname|
|入力方式|文字列(単一行)|
|最大バイト数|64|
|必須|✓|



![画像9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/ed53900c-d3b6-bb2e-d01b-563c2c9db7ad.png)

パラメータシート作成情報の設定値は、以下のように登録しました。


|設定項目|設定値|
|:---:|:---:|
|パラメータシート名|サーバー基本情報|
|パラメータシート名(REST用)|server_information|
|作成対象|パラメータシート（ホスト/オペレーションあり）|
|表示順序|1|



入力後は「作成」をクリックします。


### 2.ジョブ(Movement)の登録
<details><summary>Movementとは</summary>

Exastro IT Automation における、最小の作業単位のこと。1回の Movement 実行は、1回の ansible-playbook コマンドの実行と同じ。
詳しくはこちら→[Movement一覧](https://ita-docs.exastro.org/ja/2.4/manuals/ansible-driver/ansible_legacy.html#movement)

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

![画像10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/8ac7034c-79f7-8b05-461b-7b93897ff789.png)


![画像12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/5611ac18-3cb1-2c01-19f7-4a28c2f64d5c.png)




以下のように登録しました。
|Movement名|ホスト指定形式|
|:---:|:---:|
|ホスト名設定|IP|




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



### 3.Ansible Playbookの登録
<details><summary>Playbookとは</summary>

Ansibleで実行するタスクを記述したもの。
詳しくはこちらを参照。→[Playbook素材集](https://ita-docs.exastro.org/ja/2.4/manuals/ansible-driver/ansible_legacy.html#playbook)
</details>
playbookを登録します。
「Ansible-Lagacy」メニューグループ　→　「Playbook素材集」メニュー　→　「登録」を選択し、事前に準備しておいた「hostname.yml」をアップロードします。

![画像17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/7387ab8f-8113-2513-85af-c45a29321c9d.png)

![画像18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/ab9c355f-7d97-335e-e98f-96a2c04ab762.png)



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

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


### 4.ジョブ(Movement)とAnsible Playbookの紐付け 
<details><summary>MovementとPlaybookの紐づけについて</summary>

詳しくはこちらを参照。→[Playbook素材集](https://ita-docs.exastro.org/ja/2.4/manuals/ansible-driver/ansible_legacy.html#movement-playbook)
</details>
「Ansible-Lagacy」メニューグループ　→　「Movement-Playbook紐付」メニュー　→　「登録」を選択します。

![画像13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/84694b1f-f449-d273-6613-db1cefc25d9f.png)


![画像14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/f4df0b40-92bc-532d-59c5-65163de1c2ba.png)


以下のように登録しました。
|Movement名|Playbook素材|インクルード順序|
|:---:|:---:|:---:|
|ホスト名設定|hostname.yml|1|

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


### 5.パラメータシートの項目とPlaybookの変数を紐付け
<details><summary>代入値自動登録設定について</summary>

変数の紐づけ登録方式には、以下の3つのタイプがあります。
|登録方式|説明|
|:---:|:---:|
|Value型|基本的なタイプであり、表の中の値を変数に紐づけるもの。|
|Key型|表の項目(列名)を変数に紐づけるもの。項目の設定値が空白の場合は紐づけ対象外となる。|
|Key-Value型|名称(Key)と設定値(Value)の両方を変数に紐づける|

詳しくはこちらを参照。→ [代入値自動登録設定](https://ita-docs.exastro.org/ja/2.4/manuals/ansible-driver/ansible_legacy.html#ansible-legacy-substitution-value-auto-registration-setting)
</details>
「Ansible-Lagacy」メニューグループ　→　「代入値自動登録設定」メニュー　→　「登録」選択します。

![画像15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/061c20d6-6ea4-73f7-cf3b-e92de51ed995.png)

![画像16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/620aaf46-2edf-0021-871f-17d4fdb19e36.png)



以下のように登録しました。

|メニューグループ:メニュー:項目|登録方式|Movement名|Movement名:変数名|
|:---:|:---:|:---:|:---:|
|代入値自動登録用:サーバー基本情報:ホスト名|Value型|ホスト名設定|ホスト名設定:hostname|

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


### 6.機器一覧にターゲットマシンを登録
「Ansible共通」メニューグループ　→　「機器一覧」メニューを選択します。
登録をクリックします。
![画像19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/075f7a7b-5bf7-87e9-c4cd-eafe2c8274a0.png)

![画像20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/589afdb8-cacf-69ff-6eb9-9955aefeaad6.png)



以下のように登録しました。

|HW機器種別|ホスト名|IPアドレス|ユーザ|パスワード|認証方式|
|:---:|:---:|:---:|:---:|:---:|:---:|
|SV|server01|ターゲットサーバーのIPアドレス|root|(パスワード)|パスワード認証|

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


# 作業実行1回目

### 7.作業名(オペレーション)の登録
「基本コンソール」メニューグループ　→　「オペレーション一覧」メニュー　→　「登録」選択します。
![画像21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/2d72712b-cb67-8622-7c72-431beec1729a.png)

![画像22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/27fd61db-225e-dfa3-e946-3945e8cd12b3.png)




以下のように登録しました。
|オペレーション名|実施予定日時|
|:---:|:---:|
|RHEL8のホスト名変更作業|2024/04/01 12:00:00|


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


### 8.パラメータシートにデータを登録
今回はホスト名を「hostA」から「server01」に変更します。
「入力用」メニューグループ　→　「サーバー基本情報」メニュー　→　「登録」選択します。
![画像23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/d03d598f-a812-89f9-3c2a-89d9a850b43d.png)

![画像24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/3e78f88b-b11d-ed2b-7da0-10cbff82873e.png)


以下のように登録しました。


入力後は、「編集確認」　→　「編集反映」をクリックします。
|ホスト名|オペレーション名|パラメータホスト名|
|:---:|:---:|:---:|
|server01|2024/04/01 12:00:00_RHEL8のホスト名変更作業|server01|


### 9.事前確認
実行する前に現在の状態を確認します。
```
#実行コマンド
hostnamectl status --static
```

```
# 結果(現在のホスト名が表示されます)
hostA
```

### 10.作業実行
<details><summary>作業実行について</summary>

詳しくはこちらを参照。→[作業実行](https://ita-docs.exastro.org/ja/2.4/manuals/ansible-driver/ansible_legacy.html#ansible-legacy-execution)
</details>
「Ansible-Lagacy」メニューグループ　→　「作業実行」メニューを選択します。
その後、実行するジョブ(Movement)を選択し、作業実行をクリックします。

![画像25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/251dda1c-e142-a74c-47ae-44fd10b599f3.png)



オペレーション選択をクリックします。
![画像31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/0ac7300a-1797-c254-1bba-7375ea144320.png)



実行するオペレーションを選択し、選択決定をクリックします。

![画像27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/ae7662ad-7af3-985e-26b9-28875e2b4d09.png)

作業実行をクリックします。
![画像32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/bb4ae0cf-b4fe-35ab-0ea7-e85156bf18a2.png)




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

```
# 結果
server01
```


# 作業実行2回目

### 12.パラメータ設定を更新
<details><summary>ITA独自変数とは</summary>

ITA 独自で定義している変数のこと。ログイン先のホスト名を変数で取得できるため、パラメータの一元管理が可能となる。
その他のITA独自変数はこちらを参照。→[ITA独自変数](https://ita-docs.exastro.org/ja/2.4/manuals/ansible-driver/ansible_common.html#ita)
</details>
次はITA独自変数を使ってターゲットサーバーのホスト名を変更してみたいと思います。
「入力用」メニューグループ　→　「サーバー基本情報」　→　「登録」をクリックします。

![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/88b01a7b-4890-ea22-1c86-03361dfcd18d.png)


以下のように登録しました。
|ホスト名|オペレーション名|パラメータホスト名|
|:---:|:---:|:---:|
|server01|2024/04/05 12:00:00_ITA独自変数によるホスト名変更作業|"{{ __inventory_hostname__ }}"




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


### 13.作業名(オペレーション)の登録
「基本コンソール」メニューグループ　→　「オペレーション一覧」メニュー　→　「登録」をクリックします。

![画像34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/61742f68-d8ee-a7f3-daa8-b51efbfc0168.png)


以下のように登録しました。
|オペレーション名|実施予定日時|
|:---:|:---:|
|ITA独自変数によるホスト名変更作業|2024/04/05 11:00:00|

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



### 14.機器一覧でターゲットマシンの情報を更新
「Ansible共通」メニューグループ　→　「機器一覧」メニュー　→　「登録」をクリックします。

![画像35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/8ae96181-cd6e-08ba-2c94-0ef6b86ee3f7.png)
※ssh鍵認証情報のパスフレーズは自動入力です。


以下のように登録しました。
|ホスト名|IPアドレス|ユーザ|パスワード|認証方式|
|:---:|:---:|:---:|:---:|:---:|
|db01|ターゲットサーバーのIPアドレス|root|(パスワード)|パスワード認証|


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



### 15.事前確認
実行する前に現在の状態を確認します。
```
#実行コマンド
hostnamectl status --static
```

```
# 結果
server01
```


### 16.作業実行
「Ansible-Lagacy」メニューグループ　→　「作業実行」メニュー　→「ホスト名設定　→　「作業実行」　→　「オペレーション選択」とクリックしていきます。

実行するオペレーションを選択し、選択決定をクリックします。
![画像36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798801/fb6f3976-0fea-d5b9-5ce5-80966a26abbf.png)

最後に、「作業実行」をクリックします。



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

```
# 結果
db01
```


# おわりに
今回はクイックスタートを実施し、Anislbeでサーバのホスト名変更を実施しました。

次回は[Acsible Legacyのlearn](https://ita-docs.exastro.org/ja/2.4/learn/ansible_legacy/Legacy_scenario2.html#id1)を実施し、Linuxサーバ構築でよく行うパッケージのインストール作業を自動化してみたいと思います。

次回：パッケージ管理
[Exastro IT Automation(ver2.4.0)のlearnをやってみた Ansible Legacy編 その①](https://qiita.com/a-naka/items/5063fa19a955ee13c4e1)