Exastro IT Automation 2.4.0 のLeran(Ansible-Role)をやってみた その①

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

ITAのver2.4のAnsible-Legacy-Roleの「Learn」を実際に試してみました。
設定するパラメータ等は「Learn」のドキュメントの真似をしています。
[Ansible-LegacyRoleのLearn記事](https://ita-docs.exastro.org/ja/2.4/learn/ansible_legacy_role/index.html)

また、本記事は全部で4部作の記事になります。
[Exastro IT Automation 2.4.0 のLeran(Ansible-Role)をやってみた その①](https://qiita.com/y-arai-0523/private/d6ea6db897e8dcf3d3ee)
[Exastro IT Automation 2.4.0 のLeran(Ansible-Role)をやってみた その②](https://qiita.com/y-arai-0523/private/42c29e2a4516e13e2c1d)
[Exastro IT Automation 2.4.0 のLeran(Ansible-Role)をやってみた その③](https://qiita.com/y-arai-0523/private/f763725c6aa9e5f69e5b)
[Exastro IT Automation 2.4.0 のLeran(Ansible-Role)をやってみた その④](https://qiita.com/y-arai-0523/private/092ac63ef7f1105f0f97)

# 作業環境
今回は、以下の構成で進めていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798829/02752589-7a3c-eb52-30f7-dc0103c5b450.png)

# シナリオ
実施するシナリオは以下の4つです。
記事も4部に分けてご紹介します。

**【ホスト名管理】**
対象サーバのホスト名の管理

**【パッケージ管理】**
対象サーバのにインストールするパッケージの管理

**【ジョブフロー】**
ジョブを連続で実行できるジョブフローの実行

**【ユーザー管理（演習問題）】**
対象サーバのユーザ管理

# 使用するplaybook
「Learn」のドキュメント内で提供されているplaybookがあるため、そちらを使用します。
今回はRHEL8 の資材を使用しました。
https://github.com/exastro-suite/playbook-collection-docs/blob/master/ansible_role_packages/README.md

# シナリオ① 【ホスト名管理】
対象のサーバのホスト名を設定するシナリオです。
[ホスト名管理のシナリオ](https://ita-docs.exastro.org/ja/2.4/learn/ansible_legacy_role/scenario1.html)

### オペレーション設定
基本コンソールからオペレーションを登録します。
オペレーションとは実施する作業のことで、オペレーションに対して作業対象とパラメータが紐づきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798829/6b9d8b4e-b940-deea-28fe-ab0f69b1b4e1.png)
以下の設定をしました。
+ オペレーション名：RHEL9のホスト名変更作業
+ 実施予定日時：現在時刻

### パラメータシート作成
パラメータシートの作成と設定値の登録をします。
作業に利用される設定値(パラメータ)を登録するのがパラメータシートです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798829/f4fec05c-87c2-cba5-a0ef-e0f590651364.png)
以下の設定をしました。

■画面左の項目設定
+ 項目の名前：ホスト名
+ 項目の名前(Rest API用)：hostname
+ 最大バイト数：64
+ 必須：チェックを付ける

■画面右の項目設定
+ パラメータシート名：サーバー基本情報
+ パラメータシート名(REST)：server_information
+ 表示順序：1

### 機器一覧登録
作業対象となるサーバー server01 を機器一覧に登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798829/0a6e288b-2134-ae6f-750c-16220526eb02.png)
+ HW機器種別：SV
+ ホスト名：server01
+ IPアドレス：作業対象サーバのIPアドレス
+ ユーザ：root
+ パスワード：rootのパスワード
+ 認証方式：パスワード認証

### Movement作成
Movement を作成します。
ITAでは作業(ジョブ)を Movement という単位で管理しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798829/5bde174f-dd19-1a9f-6fa1-8f44cedaba21.png)
+ Movement名：ホスト名設定
+ ホスト指定形式:IP(デフォルト値なのでそのままで良い)

### Roleの資材登録
Ansible Role (使用するplaybook) の登録をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798829/32c045d5-a652-2f60-c0e7-773ac79b391b.png)
+ ロールパッケージ名：OS-RHEL8
+ ロールパッケージファイル(ZIP形式)：OS-RHEL8.zip

### Movement と Ansible Role パッケージの紐づけ
Movement と Ansible Role パッケージの紐付けを行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798829/f0a186ba-d751-25d6-f8ce-14060a4f1986.png)
+ Movement名：ホスト名設定
+ ロールパッケージ名："OS-RHEL8:OS-RHEL8/RH_hostname/OS_build"
+ インクルード順序：1

### 代入値自動登録設定
パラメータシートの項目と Ansible Role の変数の紐付けです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798829/41445f8f-0f9c-4036-67f1-38c5a09c7dac.png)
+ メニューグループ:メニュー:項目：ホスト名設定
+ 登録方式：Value型
+ Movement名：ホスト名設定
+ "Movement名:変数名"："ホスト名設定:VAR_RH_hostname"

### ホスト名変更作業実施(1回目)
作成したパラメータシートに設定したいホスト名を入力します。
これでオペレーションとパラメータを紐づけることが出来ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798829/13853602-ede9-e14c-ab99-afdbb39f15ce.png)
+ ホスト名：server01
+ オペレーション名:RHEL9のホスト名変更作業

#### 作業実行
まず対象サーバの事前状態を確認。
私の環境では static hostname は設定していませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798829/09b8a0e2-9f81-8ef2-09b6-e0e73c5d5be6.png)

作業を実行してみると…、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798829/e398ab34-edf9-50e9-f1e2-e7de75645390.png)

無事に終了しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798829/1cf67be4-58c3-e686-c279-d10a6ed342e0.png)

再度確認してみると、static hostname が設定されていました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798829/85b9d802-6ad0-d31f-35d8-ec3f06b7952a.png)

### ホスト名変更作業実施(2回目)
#### パラメータ設定
先ほどパラメータシートに設定したホスト名を server01 から"{{ \_\_inventory_hostname\_\_ }}"という変数に変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798829/31b6a94e-e466-66b6-259f-f8627dd45ec4.png)
+ ホスト名：server01 ⇒　"{{ \_\_inventory_hostname\_\_ }}"

#### 機器一覧の更新
機器一覧もホスト名を server01 から db01 に変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798829/f3eee45e-cb80-d860-b4da-e6c074f70b19.png)
+ ホスト名：server01 ⇒　db01

先ほどまでは機器一覧にもパラメータシートの方にも server01 という名称を記載しており、二重管理状態になっていました。しかし、上記のように変数を使うことで機器一覧の情報をパラメータシートが自動で取得してくれるようです。

#### 作業実行
Movementを再度実行。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798829/79d1eb2e-4ac0-9951-efb2-5e1e97d9e818.png)

正常に終了しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798829/bb4faaa7-4c38-fd27-8dee-2f42926c713b.png)

対象のサーバの状態を確認してみると、db01 に変更されていました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798829/dd047aa7-e52d-c5fb-472f-d4ba989f4423.png)

# まとめ
今回実施したホスト名管理のシナリオでは、Exastro IT Automation の基本的な操作方法やコンセプトが分かる内容でした。

次回はパッケージ管理のシナリオの実施します。
[Exastro IT Automation 2.4.0 のLeran(Ansible-Role)をやってみた その②](https://qiita.com/y-arai-0523/private/42c29e2a4516e13e2c1d)