Exastro IT Automationの３つのAnsibleモードを使ってみた（②Ansible-LegacyRole編）

関連リンク

+ [Ansibleモード共通設定、① Ansible-Legacy編](https://qiita.com/standsetx/private/6efb0a6bef28c60bc883)
+ [② Ansible-LegacyRole編](https://qiita.com/standsetx/private/d36001ccfa8eeb2caad4)（現在の記事）
+ [③ Ansible-Pioneer編](https://qiita.com/standsetx/private/b37c5723ab5c192f1ded)

#はじめに
[前回の記事](https://qiita.com/standsetx/private/6efb0a6bef28c60bc883)では、[Exastro IT Automation](https://exastro-suite.github.io/it-automation-docs/index_ja.html)(以下ITAと略)に搭載されているAnsible３モードの１つ、Ansible-Legacyの使い方について説明しました。

今回は前回に引き続き[Ansible-Driver実習編](https://exastro-suite.github.io/it-automation-docs/asset/Learn_ja/ITA-Ansible-Driver_ja_practice.pdf)を参考して、Ansible-LegacyRoleを実際に使ってみたいと思います。


###作業環境
***
+ Exastro IT Automation 1.5.0
+ CentOS Linux 7(ITAサーバ)
+ CentOS Linux 7(targetサーバ)
+ Windows 10(ITAクライアント)
+ Google Chrome(Win10側)

***

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/19706eac-4eb5-bd20-5206-b624814b8b84.png)


##Ansible-LegacyRoleとは
Ansible-LegacyRoleとは、ロールパッケージを登録して利用できるモードです。

そもそもRoleとは、playbookで読み込む、Ansible標準のファイル構成で作られた設定のようなものです。
決められたファイル構成にすることで、Ansible側で解釈して設定を読み込んでくれます。
単純な処理だと1つのPlaybookで問題ありませんが、複雑な処理の場合はplaybookを適切なRoleに分割してインクルードさせることで、再利用性や可読性がよくなるというわけです。

自分が作成したRoleや、Ansible Galaxyから取得したRoleをITAに登録して使うことができますが、Role内の変数定義や任意の設定などは、ITA内のITAreadmeや読み替え表を使って設定します。
つまり、Role自体は変更したりしなくて済みます。

Ansible-LegacyRoleについて詳しくは、コミュニティサイトの[Ansible-Driver座学編]([Ansible-Driver座学編](https://exastro-suite.github.io/it-automation-docs/asset/Learn_ja/ITA-Ansible-Driver_ja.pdf))を参考にして下さい。

#②Ansible-LegacyRole編
今回はAnsible GalaxyからダウンロードしたRoleをITAに登録し、実行します。
このRoleは、マシンの```/etc/sudoers.d```配下にファイルを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/b931c580-d3d1-2f17-28f9-276e15aeb80a.png)


具体的な手順はこのようになります。
1. 事前準備
2. Movementの設定
3. オペレーションの設定
4. 代入値管理（パラメータシートの作成）
5. 作業実行

##1.事前準備
今回はAnsible-GalaxyからダウンロードしたRoleをITAに登録し、実行します。

使用するRoleを以下のURLからダウンロードします。
https://galaxy.ansible.com/weareinteractive/sudo

このRoleは、マシンの```/etc/sudoers.d```配下にファイルを追加します。

しかしこのRoleは、任意の部分の設定がコメントアウトされていたり、デフォルトの値が入っていたりします。
このような場合、ITAでは、Role中のファイルを変更することなく、***ITAreadme***と***読替表***を作成することで必要な変更を加えることができます。

詳しいITAreadmeと読替表については[マニュアル](https://exastro-suite.github.io/it-automation-docs/asset/Documents_ja/Exastro-ITA_%E5%88%A9%E7%94%A8%E6%89%8B%E9%A0%86%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB_Ansible-driver.pdf)を参照するとよいです。

作成するファイルは以下の通りです。

***ITAreadme***・・・変数の定義を追加・変更するための設定ファイル

```ita_readme_ansible-sudo-master.yml
sudo_users:
 - name: 
```

***読替表***・・・defaults変数定義ファイルまたはITAreadmeに定義されている
　　　　　「VAR_...」以外の変数に対して、ITAで具体値を設定できるようにするファイル

```ita_translation-table_ansible-sudo-master.txt
LCA_sudo_users: sudo_users
LCA_sudo_sudoers_file: sudo_sudoers_file
```

ダウンロードし解凍したRole、作成したファイルを以下のようにまとめ、ZIPファイルを作成します。
![図2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/d62ceb6f-78ae-9505-605e-bca3d9167b95.png)

***
①「roles」フォルダを作成
②作成した「roles」フォルダにダウンロードしたRoleを移動
③「roles」フォルダ、読替表、ITAreadmeをZIPファイルにまとめる

***

##2.Movementの設定
ここでは、Roleに関連付けるMovementの設定について述べます。
###Movementの作成
「Ansible-LegacyRole 」メニューグループ >> 「Movement一覧」
を選択し、登録作業ボタンより登録作業を開始します。

必須入力項目は「Movement名」「ホスト指定形式」です。

※Movement：各機器に対する構築ツールを使った構築、設定などの作業の単位

本記事ではMovement名「sudoer登録」ホスト指定形式「IP」と登録します。

今回、以下の表のように設定します。

| |入力内容|
|---|---|
|***Movement名*** |Sudoer登録|
|***ホスト指定形式*** |IP|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/6a014da0-199f-42f0-459b-24717a12f320.png)



***

①必須入力項目を入力
②入力後、[登録]ボタンをクリック

***

###ロールパッケージの登録
「Ansible-LegacyRole」メニューグループ >> 「ロールパッケージ管理」
を選択し、登録作業をします。

必須入力項目は「ロールパッケージ名」「ロールパッケージファイル(ZIP形式)」です。

プレイブック素材には先ほど作成した「```roles.zip```」を使用します。
ファイル指定後は必ず事前アップロードボタンを押す必要があります。

今回、ロールパッケージ名を「sudo-master」と設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/3b5e26a8-e6a8-0cc8-a5b1-4df01dbed208.png)

***

①必須入力項目を入力(ロールパッケージ選択後、「事前アップロード」ボタンをクリック)
②入力後、[登録]ボタンをクリック

***

###MovementにRoleを関連付ける
「Ansible-LegacyRole」メニューグループ >> 「Movement詳細」
を選択し、登録作業をします。

必須入力項目は「Movement」「ロールパッケージ名」「インクルード順序」です。

今回、以下の表のように設定します。

|Movement名| ロールパッケージ名 |ロール名| インクルード順序|
|---|---|---|---|
|Sudoer登録| sudo-master| ansible-sudo-master |1|


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/039151b1-77f0-9beb-d6da-9e5a4fa6e157.png)

***

①必須入力項目を適宜選択、入力
②[登録]ボタンをクリック

***

##3.オペレーションの設定
オペレーションを作成し、Movementとホストを関連付けます。

オペレーションは、作業全体を示すITAシステム内で使用する作業名称のことを指します。

「基本コンソール」メニューグループ >> 「投入オペレーション一覧」
を選択し、登録を開始します。

必須入力項目は「オペレーション名」「実施予定日」です。

今回、以下の表のように設定します。

|項目名| 入力内容|
|---|---|
|オペレーション名 |LegacyRole_Practice|
|実施予定日時 |(任意の値)|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/3428dfa2-6f26-8efc-069d-dc2434675376.png)



***

①必須入力項目「オペレーション名」「実施予定日」の入力
②[登録]ボタンをクリック

***


##4.代入値管理（パラメータシートの作成）
###パラメータシートの作成
パラメータシートを作成し、ターゲットマシンに適用するパラメータを管理します。

「メニュー作成」メニューグループ >> 「メニュー定義/作成」
を選択、必須項目を入力します。

必須入力項目は「メニュー名」「作成対象」「表示順序」「用途」です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/e8bc8ac1-d8eb-1d55-1a43-8ca43418e9fc.png)



***

①必須入力項目を適宜選択、入力
②[対象メニューグループ]ボタンをクリック

***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/2838dec2-ba6d-3c4f-ae1d-81048438c895.png)

***

③メニューグループを図のように選択（メニューグループは[前回記事「Ansibleモード共通設定」](https://qiita.com/standsetx/private/6efb0a6bef28c60bc883)にて作成済み）
④[決定]ボタンをクリック
***

###パラメータシートの項目名を定義
前項で[決定]ボタンをクリックしたその続きです。

ここではシートの項目を定義します。

項目を追加し、項目名を「sudoer_name」「sudoer_filename」と入力します。
最大バイト数はどちらも32バイトです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/e7573fb0-994b-e9c9-6336-41555a4b31be.png)


***

⑤[項目]をクリックし、新しい項目を追加
⑥「項目 1」「項目 2」をクリックし、項目名を設定
⑦図のように選択、入力
⑧[作成]ボタンをクリック
***

###パラメータの登録
ここまでで、パラメータシートの作成を行いました。
ここからはターゲットホストの設定に使用するデータを登録します。

「AnsibleDriver実践用」メニューグループ >> 「LegacyRole実践」
を選択し、登録を開始します。

必須入力項目は「ホスト名」「オペレーション」
「パラメータ>>[sudoer_name]、[sudoer_filename]」です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/ac4bf5c7-c832-33f8-3878-cda63613869f.png)

***

①必須入力項目を適宜選択、入力
②[登録]ボタンをクリック

***

###代入値自動登録設定
各項目と変数を関連付けます。

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

各項目に対して、「メニューグループ:メニュー」「登録方式」「Movement」「Value変数」を設定します。
また具体的な設定、下表のようにします。

|メニューグループ：メニュー|項目 |登録方式 |Movement |Value-変数変数名 |Value変数-メンバー変数名|
|---|---|---|---|---|---|
|LegacyRole実践用| sudoer_name |Value型 |Sudoer登録| LCA_sudo_users| [0].name|
|LegacyRole実践用 |sudoer_filename |Value型| Sudoer登録| LCA_sudo_sudoers_file||

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/3ac31ba4-3def-f3c5-2d80-0b8ea7aa7a1f.png)

***

①必須入力項目を適宜選択、入力
②[登録]ボタンをクリック

***

###代入値・作業ホストの確認

「Ansible-LegacyRole」メニューグループ >> 「作業対象ホスト」
「Ansible-LegacyRole」メニューグループ >> 「代入値管理」
の[フィルタ]をクリックし、「一覧/更新」を確認します。

設定した項目が、「legacyRole代入値自動登録設定プロシージャ」によって正しい値に指定されているかを確認します。

***作業対象ホスト***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/2cc176e8-bcf5-6e63-725b-4447b0fb4dc4.png)


***代入値管理***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/db2f6a05-75e7-303a-8554-c1dc93ce6a89.png)


##5.作業実行

###Movementの実行

「Ansible-LegacyRole」メニューグループ >>「作業実行」を選択します。

実行するMovementとオペレーションを選択し、ページ下にある[実行]をクリックすることで作業が開始します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/cd35a148-1294-028b-f4dd-d4451f78c3de.png)


***
①作成したMovementの選択
②作成したオペレーションの選択
③[実行]ボタンをクリック
***

###実行結果の確認
作業実行すると画面が遷移して、実行ステータスやログが表示されます。
また、投入データや結果データをまとめたZIPファイルをダウンロードすることができます。

適宜、必要項目を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/16bb60b1-ee52-67b6-a35a-c325b1c70399.png)


また、ターゲットマシンに移動し以下を実行します。


```:target(centos7)
# cat /etc/sudoers.d/example_sudoers
```

以下が表示されると、実行成功です。

```/etc/sudoers.d/example_sudoers
# Ansible managed


example_name ALL=(ALL:ALL)  ALL
```

#おわりに
今回は、Ansible３モードの１つ、Ansible-LegacyRoleの使い方について説明しました。

[次回はAnsible-Pioneer](https://qiita.com/standsetx/private/b37c5723ab5c192f1ded)について説明したいと思います。

関連リンク

+ [Ansibleモード共通設定、① Ansible-Legacy編](https://qiita.com/standsetx/private/6efb0a6bef28c60bc883)
+ [② Ansible-LegacyRole編](https://qiita.com/standsetx/private/d36001ccfa8eeb2caad4)
+ [③ Ansible-Pioneer編](https://qiita.com/standsetx/private/b37c5723ab5c192f1ded)（次回）

###索引

+ [ExastroSuite コミュニティページ](https://exastro-suite.github.io/docs/index_ja.html)
+ [Exastro IT Automation](https://exastro-suite.github.io/it-automation-docs/index_ja.html)
+ [ITA Ansible実習編](https://exastro-suite.github.io/it-automation-docs/asset/Learn_ja/ITA-Ansible-Driver_ja_practice.pdf)