4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Exastro IT Automation クイックスタート (ver1.8.0)

Last updated at Posted at 2021-08-06

#はじめに
Exastro IT Automationは、システム情報を構成管理、自動化するためのフレームワークです。
システムに実行する手順をコード化(IaC)し、代入されるパラメータを構成管理することで、システム情報を見える化し、構築・運用の自動化を効率的に実現することができるツールとなっています。

今回はExastro IT Automation(以下、ITA)を体感できるクイックスタートとして、ITAの標準的な連携機能であるAnsibleドライバを使って、Linuxサーバ構築でよく行うyumパッケージのインストール作業を構築対象サーバごとにパラメータ管理し、構築作業の自動化を実施してみます。

ITAのインストールや利用方法の詳細については、以下のサイトを読んでみてください。

###作業環境

図1-1.png

  • Exastro IT Automation 1.8.0
  • CentOS Linux 7.8(ITAサーバ用)
  • CentOS Linux 7.8(ターゲットマシン用)
  • Windows 10(クライアント)
  • Google Chrome (Win10側)

#今回紹介するシナリオ
自動化するための作業には、仕込みとして1度だけ実施すべき作業と、繰り返し実施する作業があります。
今回のシナリオでは、1~4が仕込みの作業にあたります。5を行い6~9,10~13は繰り返し実施する作業にあたります。

【仕込編】

  1. Playbookをアップロードしてジョブ(Movement)に紐付ける
  2. ジョブ(Movement)をジョブフロー(Conductor)に組み込む
  3. CMDBにパラメータシートを設定
  4. パラメータシートの項目とPlaybookの変数の紐付け

【実行編(1回目)】
5. ITAのCMDBの機器一覧(デフォルト)にターゲットとなるLinuxマシンを登録
6. 作業名(Operation)の登録
7. パラメータシートにデータを登録
8. ジョブフロー(Conductor)の実行
9. 実行結果の確認

【実行編(2回目)】
10. 作業名(Operation)の登録
11. パラメータシートにデータを登録
12. ジョブフロー(Conductor)の実行
13. 実行結果の確認

【参考】
CMDBパラメータの履歴管理の方法

図1-2.png

今回は以下のPlaybookを利用します。

yum_package_install.yml
- name: install the latest version of packages
  yum:
    name: "{{ item }}"
    state: latest
  with_items:
    - "{{ VAR_packages }}"

#【仕込編】
##1. Playbookをアップロードしてジョブ(Movement)に紐付ける
###1.1 Movementを登録

まずはMovementの登録を行っていきます。
「Ansible-Legacy」メニューグループ >> 「Movement一覧」メニューを選択します。

登録するデータは以下になります。

Movement名 ホスト指定形式
パッケージインストール IP

図2-1.png

「登録」ボタンをクリックして登録します。

###1.2 Playbookアップロード
次にPlaybookのアップロードを行います。
「Ansible-Legacy 」メニューグループ >> 「Playbook素材集」メニューを選択して、用意しておいたyum_package_install.ymlをPlaybook素材へアップロードします。

登録するデータは以下になります。

Playbook素材名 Playbook素材
yum_package_install yum_package_install.yml

図2-2.png

ファイル選択からPlaybookをアップロードした際に事前アップロードを押さないとうまく登録が行えないため注意してください。
アップロード情報が表示されていることを確認し「登録」ボタンをクリックして登録します。

###1.3 アップロードしたPlaybookをMovementに紐付け
次にアップロードしたPlaybookをMovementに紐付けます。
「Ansible-Legacy 」メニューグループ >> 「Movement-Playbook紐付」メニューを選択します。

登録するデータになります。

Movement Playbook素材 インクルード順序
1:パッケージインストール yum_package_install 1

図2-3.png

「登録」ボタンをクリックして登録します。

**

インクルード順序って何?

今回のシナリオでは1ジョブ(Movement)に対して1つのplaybookを紐付けましたが、
1つのジョブ(Movement)に複数のplaybookを紐づけられます。
playbookが様々なジョブ(Movement)に再利用できます。
図2-4.png
**

##2. ジョブ(Movement)をジョブフロー(Conductor)に組み込む
次にMovementをConductorに組み込んでいきます。
「Conductor」メニューグループ >> 「Conductorクラス編集」メニューを選択します。

最初にConductor名と説明の入力を行います。
登録するデータは以下になります。

Conductor名 説明
パッケージインストール パッケージインストール(サンプル)

次に右側のMovementタブから作成したMovementをドラッグ&ドロップします。
Start - Movement - Endの順で線をつなぎ「登録」ボタンをクリックして登録します。
図3-1.png

##3. CMDBにパラメータシートを設定
パラメータシートの設定を行う前にITAのメニューグループとメニューの関係について、整理してみました。
下図のように、メニューグループ内にたくさんのメニューが入っていて、メニュー=パラメータシートと考えてよいと思います。
今回はクイックスタートなのでデフォルトのメニューグループ(入力用、代入値登録用、参照用)を使用しますが、自分でメニューグループやメニューを作成することが可能です。
詳しくは、ITAの利用手順マニュアル メニュー作成機能を参照ください。
図4-1.png

###3.1 パラメータシートを作成する
パラメータシートの作成を行います。
「メニュー作成」メニューグループ >> 「メニュー定義/作成」メニューを選択します。

登録するデータは以下になります。

メニュー名 作成対象 表示順序
インストールパッケージ一覧 パラメータシート(ホスト/オペレーション含む) 1

図4-2.png

次にカラムグループを作成します。
登録するグループ名になります。

グループ名
インストールパッケージ

図4-3.png

グループが作成出来たら項目を作成していきます。
登録するデータは以下になります。
今回はプルダウン選択内にデフォルトで用意されているメニュー作成:選択1:*-(ブランク)を利用します。
「*」を選択するとインストールの対象、「ブランク(空白)」を選択するとインストールの対象外といった形で使用することができます。

項目名 入力方式 選択項目
httpd プルダウン選択 メニュー作成:選択1:*-(ブランク)
mariadb-server プルダウン選択 メニュー作成:選択1:*-(ブランク)
php プルダウン選択 メニュー作成:選択1:*-(ブランク)
perl プルダウン選択 メニュー作成:選択1:*-(ブランク)
python プルダウン選択 メニュー作成:選択1:*-(ブランク)

図4-4.png

次に先ほど作成したカラムグループの領域に項目をドラッグ&ドロップしていきます。

図4-5.png

以下の図のように設定ができたら、「作成」ボタンをクリックして作成します。

図4-6.png

パラメータシートの確認方法
「メニュー作成」メニューグループ >> 「メニュー作成履歴」メニューから作成したパラメータシートの確認ができます。 ![図4-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1333336/e823ce3b-6e93-fb3f-d7df-97e8da0f3761.png)

##4. パラメータシートの項目とPlaybookの変数の紐付け
仕込偏の最後にパラメータシートの項目とPlaybookの変数を代入値自動登録にて紐付けます。
一度紐付け設定を行っておけば、パラメータシートにデータを登録するだけで、Playbook実行時に登録データが利用できます。
代入値自動登録の1つのポイントとして、変数紐づけの登録方式は以下の3タイプがあります。

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

今回のシナリオでは、表の項目(列名)をPlaybookに具体値として代入したいので、登録方式は「Key型」を選択します。
詳細はこちらシステム構築・運用の効率化ガイドブックを参照してください。

それでは実際に登録をしていきます。
「Ansible-Legacy」メニューグループ >> 「代入値自動登録設定」メニューを選択します。
登録するデータは以下になります。

メニューグループ:メニュー 項目 登録方式 Movement Key変数
変数名
代入順序
2100011611:代入値自動登録用:2:インストールパッケージ一覧 パラメータ/インストールパッケージ/httpd Key型 1:パッケージインストール 1:VAR_packages 1
2100011611:代入値自動登録用:2:インストールパッケージ一覧 パラメータ/インストールパッケージ/mariadb-server Key型 1:パッケージインストール 1:VAR_packages 2
2100011611:代入値自動登録用:2:インストールパッケージ一覧 パラメータ/インストールパッケージ/php Key型 1:パッケージインストール 1:VAR_packages 3
2100011611:代入値自動登録用:2:インストールパッケージ一覧 パラメータ/インストールパッケージ/perl Key型 1:パッケージインストール 1:VAR_packages 4
2100011611:代入値自動登録用:2:インストールパッケージ一覧 パラメータ/インストールパッケージ/python Key型 1:パッケージインストール 1:VAR_packages 5

図5-1.png

「登録」ボタンをクリックして登録します。

表示フィルタを開き、「フィルタ」ボタンをクリックすると登録したデータを確認することができます。
5件のデータが登録できていることを確認してください。
図5-2.png

ここまでで仕込偏は終了になります。

#【実行編1回目】
##5. ITAのCMDBの機器一覧(デフォルト)にターゲットとなるLinuxマシンを登録
最初にターゲットとなるLinuxマシンを登録を行います。
「基本コンソール」メニューグループ >> 「機器一覧」メニューを選択します。

登録しなければならない項目は以下になります。各自で用意したターゲットサーバーの情報を入力してください。

HW機器種別 ホスト名 IPアドレス ログインユーザID ログインパスワード
管理
ログインパスワード Legacy/Role利用情報
認証方式
SV (任意のホスト名) (任意のIPアドレス) (任意のログインユーザID) (任意のパスワード) パスワード認証

図6-1.png

「登録」ボタンをクリックして登録します。

##6. 作業名(Operation)の登録
次にOperationの登録を行います。
「基本コンソール」メニューグループ >> 「オペレーション一覧」メニューを選択します。

登録するデータは以下になります。

オペレーション名 実施予定日時
オペレーション1 (任意の実行予定日時)

図7-1.png

「登録」ボタンをクリックして登録します。

##7. パラメータシートにデータを登録
次にターゲットマシンに設定するデータの登録を行います。
データの登録先はパラメータシート(インストールパッケージ一覧)です。

「入力用」メニューグループ >> 「インストールパッケージ一覧」メニューを選択します。

登録するデータは以下になります。

ホスト名 オペレーション httpd mariadb-server php perl python
(機器登録で登録したホスト名) (選択した実行予定日時)_1:オペレーション1 * * * *

図8-1.png

「登録」ボタンをクリックして登録します。

代入値自動登録設定の時と同様に表示フィルタを開き、「フィルタ」ボタンをクリックすると登録したデータを確認することができます。
データに間違いがないかを確認してください。
図8-2.png

##8. ジョブフロー(Conductor)の実行
ここまで色々と登録や作成を行ってきましたがいよいよ実行になります。
「Conductor」メニューグループ >> 「Conductor作業実行」メニューを選択します。
次に作成したジョブフロー(Conductor)と作業名(Operation)のラジオボタンを選択します。

図9-1.png

最後に「実行」ボタンをクリックして実行します。

ジョブフロー(Conductor)が正常終了すると、以下の画面が表示されターゲットマシンへの設定も完了です。
図9-2.png

ジョブ(Movement)を選択し、Doneのアイコンまたは右側のOperation statusをクリックすると詳細を確認することができます。
詳細画面のInputDataから実行時のPlaybook一式(host_varsやinventryを含む)をダウンロードできます。
また、ResultDataから実行結果をダウンロードできます。

図9-3.png

##9. 実行結果の確認
前の手順で表示した詳細画面の進行状況(実行ログ)でAnsibleの実行ログを確認することができます。
図10-1.png

今回オペレーション1ではhttpd,php,perl,pythonをインストールをするように設定を行いました。
以下は実行ログから抽出したログの一部になります。

進行状況(実行ログ)の一部
~~~~~~~~~~~~~~~~~~~~省略~~~~~~~~~~~~~~~~~~~~~~~
Installed:
  httpd.x86_64 0:2.4.6-97.el7.centos                                            

Dependency Installed:
  httpd-tools.x86_64 0:2.4.6-97.el7.centos     mailcap.noarch 0:2.1.41-2.el7    

Complete!
"]}
~~~~~~~~~~~~~~~~~~~~省略~~~~~~~~~~~~~~~~~~~~~~~
Installed:
  php.x86_64 0:5.4.16-48.el7                                                    

Dependency Installed:
  libzip.x86_64 0:0.10.1-8.el7             php-cli.x86_64 0:5.4.16-48.el7       
  php-common.x86_64 0:5.4.16-48.el7       

Complete!
"]}
~~~~~~~~~~~~~~~~~~~~省略~~~~~~~~~~~~~~~~~~~~~~~
Updated:
  perl.x86_64 4:5.16.3-299.el7_9                                                

Dependency Updated:
  perl-libs.x86_64 4:5.16.3-299.el7_9                                           

Complete!
"]}
~~~~~~~~~~~~~~~~~~~~省略~~~~~~~~~~~~~~~~~~~~~~~
Updated:
  python.x86_64 0:2.7.5-90.el7                                                  

Dependency Updated:
  python-libs.x86_64 0:2.7.5-90.el7                                             

Complete!
"]}

PLAY RECAP *********************************************************************
hostA          : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 

ログを確認すると新たにhttpdとphpがインストールされたことが確認できます。
また既にCentOS7にデフォルトでインストールされているparlとpythonはバージョンアップを行ったことが確認できます。


以下のようにターゲットマシンでも、パッケージがインストールできていることを確認できます。

hostA
$ yum list installed httpd
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp-srv2.kddilabs.jp
 * extras: ftp-srv2.kddilabs.jp
 * updates: ftp-srv2.kddilabs.jp
Installed Packages
httpd.x86_64                    2.4.6-97.el7.centos                     @updates

#【実行編2回目】
2回目で行う作業は実行1回目の6~9と同じになります。それぞれ登録するデータが異なるので間違えないよう注意してください。

##10. 作業名(Operation)の登録

Orerationの登録を行います。
登録するデータは以下になります。実施予定日時は1回目で登録した日時よりも後の日時を選択してください。

オペレーション名 実施予定日時
オペレーション2 (任意の実行予定日時)

図11-1.png

##11. パラメータシートにデータを登録

次にパラメータシートにデータを登録していきます。
登録するデータは以下です。

ホスト名 オペレーション httpd mariadb-server php perl python
(一回目に選択した時と同じホスト名) (選択した実行予定日時)_1:オペレーション2 * * * * *

図12-1.png

##12. ジョブフロー(Conductor)の実行
それでは実行していきましょう。
ジョブフロー(Conductor)と2回目で作成した作業名(Operation)のラジオボタンを選択し実行ボタンをクリックします。
図13-1.png

##13. 実行結果の確認
実行結果の確認を行っていきます。
1回目と同様にAnsibleの実行ログを開きます。
図14-1.png

以下は実行ログから抽出したログの一部になります。

進行状況(実行ログ)の一部
~~~~~~~~~~~~~~~~~~~~省略~~~~~~~~~~~~~~~~~~~~~~~
"results": ["All packages providing httpd are up to date",
""]}
~~~~~~~~~~~~~~~~~~~~省略~~~~~~~~~~~~~~~~~~~~~~~
Installed:
  mariadb-server.x86_64 1:5.5.68-1.el7                                          

Dependency Installed:
  mariadb.x86_64 1:5.5.68-1.el7                                                 
  perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7                                  
  perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7                                   
  perl-DBD-MySQL.x86_64 0:4.023-6.el7                                           
  perl-DBI.x86_64 0:1.627-4.el7                                                 
  perl-IO-Compress.noarch 0:2.061-2.el7                                         
  perl-Net-Daemon.noarch 0:0.48-5.el7                                           
  perl-PlRPC.noarch 0:0.2020-14.el7                                             

Dependency Updated:
  mariadb-libs.x86_64 1:5.5.68-1.el7                                            

Complete!
"]}
~~~~~~~~~~~~~~~~~~~~省略~~~~~~~~~~~~~~~~~~~~~~~
"results": ["All packages providing php are up to date",
""]}
~~~~~~~~~~~~~~~~~~~~省略~~~~~~~~~~~~~~~~~~~~~~~
"results": ["All packages providing perl are up to date",
""]}
~~~~~~~~~~~~~~~~~~~~省略~~~~~~~~~~~~~~~~~~~~~~~
"results": ["All packages providing python are up to date",
""]}

PLAY RECAP *********************************************************************
hostA          : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

オペレーション2ではすべての項目で*を選択して実行しました。
新たにmariadbのインストールを行った為、インストールや他のパッケージとの依存関係の解決を行ったことが確認できます。
また他の4つのパッケージ(htpd,php,perl,python)は既にインストール済みでしたが、Ansible実行の「冪等性」の特性によりエラーにはならず、バージョンアップの確認が行われすべて最新版だったことが確認でき、サーバ状態が保たれたことをがわかります。

#【参考】CMDBパラメータの履歴管理の方法
ITAではCMDBに「誰が・いつ・何をしたのか?」を履歴管理し、その時の時点でシステムのパラメータはどうなっているのかを抽出できる機能があります。

今回実施したデータを参照していきます。
「参照用」メニューグループ >> 「インストールパッケージ一覧」メニューを選択します。

まずは基準日時を指定せずにフィルタをクリックしてみます。
図15-1.png
現時点での最新のデータが表示されることが確認できます。

次に2回目の実行を行った日時より前の日時でフィルタをしてみます。
図15-2.png
1回目の実行結果が表示されることが確認できます。

最後に1回目に実行した日時より前の日時でフィルタをしてみます。
図15-3.png
1回目の設定も行っていないため、何も表示されないことが確認できます。

このようにパラメータの履歴管理をすることにより、設計者や運用者がストレスなくシステム更改を行えることがITAの魅力の一つです。

#まとめ
今回はクイックスタートとしてLinuxのパッケージインストールを、1台のサーバへ自動構築してみましたが、以下のように複数機器に対し、登録内容を変えて構成管理・同時実行するも可能です。

ホスト名 オペレーション httpd mariadb-server php perl python
hostA オペレーション1 * * * *
hostA オペレーション2 * * * * *
hostB オペレーション2 * * *
hostC オペレーション2 * * *
hostD オペレーション2 *

さらに今回と同様の作業で、例えばコンフィグファイルの設定値変更やサービスの有効化・起動などを自動化することが可能だと思いますので、ぜひ実際に実行してみてください。

#関連リンク

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?