Exastro IT Automationの３つのAnsibleモードを使ってみた（Ansibleモード共通設定、①Ansible-Legacy編）

関連リンク

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

#はじめに
Exastro IT Automation(以下ITAと略)には、Ansibleと連携するAnsible-Driverがあり、Ansible-Legacy、Ansible-LegacyRole、Ansible-Pioneerという3つのモードがあります。
それぞれのモードについては、コミュニティサイトの[Ansibleとの連携（座学編）](https://exastro-suite.github.io/it-automation-docs/asset/Learn_ja/ITA-Ansible-Driver_ja.pdf)に詳しく書いてありました。

今回はこのAnsibleの3つのモードを、3回に分けて実施していこうと思います。
手順については、[Ansibleとの連携（実習編）](https://exastro-suite.github.io/it-automation-docs/asset/Learn_ja/ITA-Ansible-Driver_ja_practice.pdf)を参考にしました。

まずは本記事で、Ansible-Driverを使う上で共通の作業と、Ansible-Legacyを説明します。
[前回の記事のクイックスタート](https://qiita.com/standsetx/items/7a96f2286b6d1f3a3524)でもAnsible-Legacyを使いましたが、今回はパラメータシートや代入値自動登録設定、ファイル管理機能なども連携させて、より高度な使い方をしていきます。

##作業環境
[前回の記事のクイックスタート](https://qiita.com/standsetx/items/7a96f2286b6d1f3a3524)では、作業対象がITAサーバ自身でしたが、今回は作業対象であるターゲットサーバを新たに用意しました。
***
+ 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-Legacyとは
Ansible-Legacyは、ITAのAnsible-Driverの3つのモードの中でも一番基本となるものです。
まず「Playbook素材集」にて、単体のYAMLファイルを登録します。
そして「Movement」で、作業内容に合わせて、登録したいくつかのYAMLファイルを組み合わせて実行することができます。

例えば、Playbook素材として
「OS共通初期手順」「HTTPサーバインストール」「DBMSインストール」
を登録すると、

Webサーバを構築したいときは
「OS共通初期手順」と「HTTPサーバインストール」
でMovementを作ればいいし、

DBサーバを構築したいときは
「OS共通初期手順」と「DBMSインストール」
を組み合わせればいいというわけです。

作業によって、YAMLファイルを使いまわせるのは便利ですよね。

もちろん設定値は変数にしておくことで再利用性を高めることができます。
変数への代入値は、直接設定も可能ですが、ITAで作成したパラメータシートと紐づけて代入することもできます。
変数とパラメータシートの紐付は、Ansible-Legacyに限らず、3モードで共通の機能です。

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


#Ansibleモード共通設定


AnsibleDriverを使う前に、今回①～③のAnsible３モードでパラメータシートを作成するために必要となる、「作業対象ホストの登録」と「メニューグループの作成」について説明します。

##作業対象ホストの登録
作業の実行対象となるホストをITAに登録します。

「基本コンソール」メニューグループ >> 「機器一覧」
を選択し、登録作業ボタンより登録作業を開始します。


必須入力項目は「ホスト名」「IPアドレス」「ログインユーザID」「ログインパスワード管理」
「ログインパスワード」「認証方式」です。

上述の通り、今回はCentOS7を別に構築し、それをターゲットとしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/cced9c56-3a85-ce50-ca99-8349f70f8a86.png)

***

①ターゲットサーバの「ホスト名」「IPアドレス」「ログインユーザID」「ログインパスワード管理」
　「ログインパスワード」「認証方式」の入力、設定
②[登録]ボタンをクリック

***
##メニューグループの作成
後の手順で、パラメータシートを作成して、変数と紐づけて値を代入します。
その時作成するパラメータシートを所属させるための、メニューグループを作ります。
通常のものと、参照用の2つを作成します。

ちなみにメニューグループというのは、簡単に言うと、「メインメニュー」を押下した画面にあるアイコンたちです。
メニューグループを押して左に列記されるのが、メニューです。

「管理コンソール」メニューグループ >> 「メニューグループ管理」
を選択し、登録作業ボタンより登録作業を開始します。

以下の２つのメニューグループを作成します。

|メニューグループ名称|表示順序|
|---|---|
|AnsibleDriver実践用|110|
|AnsibleDriver実践用（参照用） |115|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/568a8bca-8453-5265-4a3b-7ac29aa0d2fb.png)
***

①必須入力項目を入力
②入力後、[登録]ボタンをクリック
③上記の表のすべてを作成

***


#①Ansible-Legacy編
今回はAnsible-Legacyを使って「Apache・Tomcat」のインストールと起動を行います。
Movementを組み合わせたConductorを作り、パラメータシートから変数を代入して実行させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/bd4556c5-e93a-99cb-3524-72d879663383.png)


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


##1.事前準備
まずは、「プレイブック素材集」に登録するためのplaybookのファイルを作成します。
今回実行するplaybookは以下の５つです。
テキストエディタなどで、以下の内容とファイル名で記述、ファイル保存して下さい。

***1-yum_install.yml***・・・指定したパッケージをインストール。変数には複数具体値変数が代入される。
***2-open_port.yml***・・・指定したポート宛の通信を許可
***3-deploy_config.yml***・・・設定ファイルを配置
***4-start_service.yml***・・・指定したサービスを起動
***5-check_service.yｍl***・・・サービスが起動したことを確認

```yml:1-yum_install.yml
- name: install package with yum
  yum:
    name: "{{ item }}"
    state: present
  with_items: "{{ VAR_package_name }}"

```

```yml:2-open_port.yml
- name: open ports
  firewalld:
    port: "{{ VAR_port_number }}"
    state: enabled
    permanent: yes
    immediate: true
```

```yml:3-deploy_config.yml
- name: deploy httpd.conf
  copy:
    src: "{{ CPF_httpd_conf }}"
    dest: /etc/httpd/conf/httpd.conf
    owner: root
    group: root
    mode: 0644
    backup: yes
  when: 'VAR_service_name == "httpd"'
```

```yml:4-start_service.yml
- name: start service
  service:
    name: "{{ VAR_service_name }}"
    state: started
    enabled: yes
```

```yml:5-check_service.yml
- name: check if service is running and enabled
  command: 'systemctl status {{ VAR_service_name }}'
  register: command_result
  failed_when:
    - '"enabled" not in command_result.stdout'
    - '"running" not in command_result.stdout'
```

playbookの3-deploy_config.ymlで配置する、Apacheの設定ファイル（httpd.conf）を作成します。
配置するファイルは後ほど「ファイル管理」に登録を行います。

```txt:httpd_config.txt
# ----- ITA Legacy Practice -----
ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin root@localhost
ServerName www.example.com:80

<Directory />
  AllowOverride none
  Require all denied
</Directory>
  DocumentRoot "/var/www/html"
<Directory "/var/www">
  AllowOverride None
  Require all granted
</Directory>
<Directory "/var/www/html">
  Options Indexes FollowSymLinks
  AllowOverride None
  Require all granted
</Directory>
<IfModule dir_module>
  DirectoryIndex index.html
</IfModule>
<Files ".ht*">
  Require all denied
</Files>
  IncludeOptional conf.d/*.conf
  ErrorLog "logs/error_log"
  LogLevel warn
<IfModule log_config_module>

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
 
    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
CustomLog logs/access_log combined

</IfModule>
<IfModule alias_module>
  ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<Directory "/var/www/cgi-bin">
  AllowOverride None
  Options None
  Require all granted
</Directory>
<IfModule mime_module>
  TypesConfig /etc/mime.types
  AddType application/x-compress .Z
  AddType application/x-gzip .gz .tgz
  AddType text/html .shtml
  AddOutputFilter INCLUDES .shtml
</IfModule>
  AddDefaultCharset UTF-8
<IfModule mime_magic_module>
  MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on
IncludeOptional conf.d/*.conf
```

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

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

各項目以下の表のように選択、入力します。

|Movement名|ホスト指定形式|
|---|---|
|Install_Packages|IP|
|Open_Ports|IP|
|Start_Service|IP|

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

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



***

①必須入力項目を入力
②入力後、[登録]ボタンをクリック
③上記の表のすべてを作成

***

###プレイブック素材集へ新規playbookを登録
「Ansible-Legacy 」メニューグループ >> 「プレイブック素材集」
を選択し、登録作業をします。

必須入力項目は「プレイブック素材名」「プレイブック素材」です。

プレイブック素材には「1.事前準備」で作成した５つのplaybookを使用します。
ファイル指定後は必ず事前アップロードボタンを押す必要があります。

登録するプレイブック素材名とplaybook素材の紐付けは、下表のように設定します。

|プレイブック素材名| プレイブック素材|
|---|---|
|yum_install |1-yum_install.yml|
|open_ports |2-open_ports.yml|
|deploy_config| 3-deploy_config.yml|
|start_service |4-start_service.yml|
|check_service_state |5-check_service.yml|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/4928c28c-2115-164d-5841-970cbab16843.png)

***

①必須入力項目を入力(プレイブック素材選択後、「事前アップロード」ボタンをクリック)
②入力後、[登録]ボタンをクリック
③作成した５つのplaybookすべてを登録

***

###素材ファイルを登録
「Ansible共通」メニューグループ >> 「ファイル管理」
を選択し、登録作業をします。

必須入力項目は「ファイル素材」「素材埋込変数名」です。

ファイル素材には「1.事前準備」で作成したApacheの設定ファイル（httpd.conf）を使用します。
ファイル指定後は必ず事前アップロードボタンを押す必要があります。

また下表のように設定します。

|ファイル埋込変数名 |ファイル素材|
|---|---|
|CPF_httpd_conf| httpd_config.txt|


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/78fbb65a-f875-f470-8244-9b1e047d73ee.png)


***

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

***

###Movement詳細への登録
「Ansible-Legacy 」メニューグループ >> 「Movement詳細」
を選択し、登録作業をします。

必須入力項目は「Movement」「プレイブック素材」「インクルード順序」です。

インクルード順序及びMovementに紐付けるプレイブックは以下の表のように設定します。

|Movement|プレイブック素材|インクルード順序|
|---|---|---|
|Install_Packages|yum_install|1|
|Open_Ports|open_ports|1|
|Start_Service|deploy_config|1|
|Start_Service|start_service|2|
|Start_Service|check_service_state|3|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/0b0a30e4-8f7c-09e1-3793-084107040693.png)

***

①必須入力項目を適宜選択、入力
②[登録]ボタンをクリック
③上記の表のすべてを作成
***

##3.Conductorの作成
前項で定義したMovementをまとめたConductorを作成します。

「Conductor」メニューグループ >> 「Conductorクラス編集」
を選択し、登録作業をします。

Movementをドラッグ＆ドロップで追加し、作業順にノード同士をつなぎます。
「start」から並べたノードの「in」から「out」をつなぎ、「end」までつなげます。

ノードの順番は
1.Install_Packages
2.Open_Ports
3.Start_Service
とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/0321d39d-1447-9c52-0a98-d257f6c1a6ff.png)
***
①Conductorの名前を入力
②ドラッグ＆ドロップでMovementを追加
③作業順にノードをつなぐ
④[登録]ボタンをクリック

***

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

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

以下の２つのオペレーションを作成します。

|オペレーション名 | 実施予定日時|
|---|---|
| Install Apache|任意 |
|Install Tomcat | 任意|


必須入力項目は「オペレーション名」「実施予定日」です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/ac5a0448-4fd0-a6ab-2ee9-a169607c0de8.png)

***

①必須入力項目「オペレーション名」「実施予定日」の入力
②[登録]ボタンをクリック
③上記の表のすべてを作成
***

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

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

必須入力項目は「メニュー名」「作成対象」「表示順序」「用途」です

入力内容は以下の図のように設定してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/2edde5e8-05d8-2272-1da9-88ad0110dcdc.png)


***

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

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

***

③メニューグループを図のように選択（メニューグループは「Ansibleモード共通設定」にて作成済み）
④[決定]ボタンをクリック
***

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

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

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/aa960294-137f-923a-a011-b48bd6707d1a.png)


***

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

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

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

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

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

|ホスト名 |オペレーション |package_name |package_name_sub |port_number |service_name|
|---|---|---|---|---|---|
|(対象のホスト) |Install Apache | httpd |(空欄) |80/tcp |httpd|
|(対象のホスト) | Install Tomcat| tomcat |tomcat-webapps| 8080/tcp |tomcat|


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/f2baa4ef-e7c2-bd1b-9ca3-b24b902d310b.png)


***

①必須入力項目を適宜選択、入力
②[登録]ボタンをクリック
③上記の表のすべてを作成
***

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

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

|メニュー |項目 |登録方式 |Movement |Value変数-変数名|代入順序|
|---|---|---|---|---|---|
|Legacy実践 |package_name |Value型| Install Packages |VAR_package_name| 1|
|Legacy実践 |package_name_sub |Value型| Install Packages |VAR_package_name |2|
|Legacy実践 |port_number| Value型 |Open Ports |VAR_port_number||
|Legacy実践|service_name |Value型| Start Service |VAR_service_name||

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


***

①必須入力項目を適宜選択、入力
②[登録]ボタンをクリック
③上記の表のすべてを作成
***

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

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

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

***作業対象ホスト***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/5a364300-9646-f262-5020-d0fcdbdddf16.png)


***代入値管理***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/3eff1dea-6781-157a-791f-f7ce85fd7f48.png)



##6. 作業実行

###Conductorの実行
「Conductor」メニューグループ >> 「Conductor作業実行」を選択します。

実行するConductorとオペレーションを選択し、ページ下にある[実行]をクリックすることで作業が開始します。



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/58500102-fd61-6234-f1e7-9eb686bcf4a6.png)

***
①作成したConductorの選択
②作成したオペレーションの選択
③[実行]ボタンをクリック
④「Install Apache」実行後、「Install Tomcat」を選択し実行
***

オペレーション「Install Apache」選択、実行確認したのち、
再度「Conductor」メニューグループ >> 「Conductor作業実行」に戻り
オペレーション「Install Tomcat」を選択し実行します。


###実行結果の確認
「Conductor」メニューグループ >> 「Conductor作業確認」を選択します。

実行した確認したいノードを選択して作業の詳細を確かめることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/0caab39a-c4e5-d840-6484-67a9ad0f970f.png)

***
①確認したいノードを選択
②作業情報やリンクが表示される
***

リンクを押下すると、Movementごとの実行詳細を確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/e5938064-84fb-d870-a855-1a5b325cf49a.png)


以下にアクセスしてApacheとTomcatがインストールおよび起動されているかを確かめます。
***Apache- http://(targetのIPアドレス):80***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/e52b3727-c998-5852-2f84-c59d209e7f33.png)

***Tomcat- http://(targetのIPアドレス):8080***
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652376/9147bfc9-bdc4-e736-dc85-1d172aca10bc.png)

ApacheおよびTomcatの画面が表示されたので、成功です。

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

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

関連リンク

+ [Ansibleモード共通設定、① Ansible-Legacy編]()
+ [② 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)