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

関連リンク

+ [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)（現在の記事）


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

今回はその３モードの最後の1つ、Ansible-Pioneerについて説明したいと思います。
引き続き、[Ansible実習編](https://exastro-suite.github.io/it-automation-docs/asset/Learn_ja/ITA-Ansible-Driver_ja_practice.pdf)を参考しています。



##作業環境
***
+ 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-Pioneerとは
Ansible-Pioneerとは、なんとITAの独自モジュールです。
対話ファイルというものを作成すると、直接実行するPlaybookからPioneerモジュールを使って対話ファイルを順番に実行していきます。

Ansibleのどのモジュールを使っても自動化できない場合、手動作業を挟んでしまうと自動化のメリットが半減しますよね。
そこで、Ansible-Pioneerが自動化を止めない最後の切り札となるわけです。
Telnet・SSHでログイン可能であれば対応可能なので、幅広い機器に対応できますね。
これでより柔軟な自動化を実現できます。

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


#③Ansible-Pioneer編
今回はPioneer独自モジュールを用い、対象ホストの/tmp/hostsにホスト追加を実施します。

具体的な手順はこのようになります。

1. 事前準備
2. Movementの設定
3. オペレーションの設定
4. 代入値管理（パラメータシートの作成）
5. 作業実行

##1.事前準備
今回は以下の対話ファイルを使用します。
書式やモジュールについての詳細は[マニュアル](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)を参照するとよいです。

```yml:add_host.yml

conf:
  timeout: 20
  
exec_list:
  - expect: 'password'
    exec: '{{ __loginpassword__ }}'

#“register”を用い、‘cat /tmp/hosts’ の標準出力を登録
  - command: 'cat /tmp/hosts'
    prompt: root@{{ __loginhostname__ }}
    register: result_stdout
    when:
      - VAR_hosts_ip is define
      - VAR_hosts_name is define

  - command: 'echo {{ item.0 }} {{ item.1 }} >> /tmp/hosts'
    prompt: 'root@{{ __loginhostname__ }}'
    when:
      - VAR_hosts_ip is define
      - VAR_hosts_name is define
#“with_items”を用いた繰り返し処理を定義
    with_items:
      - '{{ VAR_hosts_ip }}'
      - '{{ VAR_hosts_name }}'
#“exec_when”を用いた分岐処理を定義
#判定は繰り返しごとに行われる
    exec_when:
      - result_stdout no match({{ item.0 }} *{{ item.1 }})
#登録された出力中に指定文字列が存在しないときに処理を行う
```

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

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

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

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

| |入力内容|
|---|---|
|***Movement名*** |add_host|
|***ホスト指定形式*** |IP|
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/6a014da0-199f-42f0-459b-24717a12f320.png)



***

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

***

###OS種別マスタの作成
PioneerはターゲットホストのOSに応じて、実際に投下されるコードを選択することができます。

「Ansible-Pioneer」メニューグループ >> 「OS種別マスタ」
を選択し、登録作業ボタンより登録作業を開始します。

今回のターゲットホストはCentOS7のサーバなので、以下のように設定します。

|| 入力内容|
|---|---|
|***OS種別名*** |CentOS7|
|***SV*** |●|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/0bdde2fa-7e06-cda7-8fbc-521f1a5ef995.png)
***

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

***

###機器一覧情報への追加
先程登録したOS種類とターゲットマシンを紐付けます。

「基本コンソール」メニューグループ >> 「機器一覧」を選択します。
[フィルタ]ボタンを押下し、対象となる機器(target)の[更新]を押下します。

次に下表のように選択・設定します。

||入力内容|
|---|---|
|***プロトコル***| ssh|
|***OS種別*** |CentOS7|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/14be4c0b-0e0e-d16c-f2c9-93e65bfa71ff.png)

***

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

***

###対話種別の作成

「Ansible-Pioneer」メニューグループ >> 「対話種別リスト」
を選択し、登録作業ボタンより登録作業を開始します。

次に下表のように選択・設定します。

|| 入力内容|
|---|---|
|***対話種別名***| hosts追加|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/b0bc8916-5be2-1f01-d313-b020d0d1b69e.png)
***

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

***

###対話ファイル素材の登録
「Ansible-Pioneer」メニューグループ >> 「対話ファイル素材集」
を選択し、登録作業をします。

対話種別、OS種別は先程作成したものを、
プレイブック素材には先ほど作成した「```add_hosts.yml```」を使用します。
ファイル指定後は必ず事前アップロードボタンを押す必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/45960f26-0ffa-82d6-e525-dab736c739db.png)


***

①必須入力項目を入力(対話ファイル素材選択後、「事前アップロード」ボタンをクリック)
②入力後、[登録]ボタンをクリック

***

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

必須入力項目は「Movement」「対話種別」「インクルード順序」です。

次に下表のように選択・設定します。

||入力内容|
|---|---|
|***Movement***| add_hosts|
|***対話種別*** |hosts追加|
|***インクルード順序***| 1|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/bd885df7-d611-5046-7bd2-e7948ee17fd3.png)

***

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

***

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

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

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

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

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

|項目名| 入力内容|
|---|---|
|オペレーション名| Pioneer_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/ffd3f98b-a53e-cc01-037f-7626f91e9d6e.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)にて作成済み）
④[決定]ボタンをクリック
***

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

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

項目を追加し、「項目名」「入力方式」「最大バイト数」を下図のように設定します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/74b61959-c034-9e63-c6d7-53f0efecb74a.png)


***

⑤[項目]をクリックし、新しい項目を3つ追加
⑥図のように選択、入力、変更
⑦[作成]ボタンをクリック
***

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

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

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

具体的な設定は以下の表を参考にします。

|ホスト名 |オペレーション |hosts_ip| hosts_ip_second |hosts_name| hosts_name_second|
|---|---|---|---|---|---|
|(対象のホスト)| Pioneer_practice |192.168.10.10 |192.168.20.5 |```www.test.com``` |```www.pioneer.com```|


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/04f0b1d9-55ff-d323-89fb-16731d4a7f47.png)



***

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

***

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

「Ansible-Pioneer」メニューグループ >> 「代入値自動登録設定」
を選択し、登録作業をします。
具体的な設定は以下の表を参考にします。

|メニュー |項目 |登録方式 |Movement |Value変数-変数名|代入順序|
|---|---|---|---|---|---|
|Pioneer実践 |hosts_ip |Value型|add_hosts |VAR_hosts_ip| 1|
|Pioneer実践 |hosts_ip_second |Value型| add_hosts |VAR_hosts_ip| 2|
|Pioneer実践 |hosts_name|Value型 |add_hosts |VAR_hosts_name| 1|
|Pioneer実践 |hosts_name_second |Value型|add_hosts| VAR_hosts_name |2|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/979954c9-073d-e4ce-a0bf-e83f28f3e856.png)


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

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

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

***作業対象ホスト***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/c1713f00-6529-978c-6cae-dbafebdd3499.png)


***代入値管理***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/c5f46fb5-756e-a8fb-bb4c-7ea27e26d9ba.png)


##5.作業実行

###Movementの実行

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

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

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

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

適宜、必要項目を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/633a9663-72e4-9d93-6ca6-d66f72ab7f45.png)

また、ターゲットホストに移動し```/tmp/hosts```の中身を確認します。


```:target(centos7)
# cat /tmp/hosts
```

以下が表示され、ホストが追加されていれば成功です。

```/tmp/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.10 www.test.com
192.168.20.5 www.pioneer.com
```


#おわりに
ITAに搭載されているAnsible３モードの使い方について、３つの記事を作成し説明しました。

次回は、Windows Serverの自動設定について説明したいと思います。（現在作成中）


関連リンク

+ [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)