はじめに
Exastro IT Automationとは
システム構成(IaC+パラメータ)を管理するためのフレームワークです。
【Exastro-suite】より
今回は、12月にリリースされましたITAのver1.9を利用して、ITAのインターフェースをスムーズに体感できる「クイックスタート」に触れてみたいと思います。
「クイックスタート」では、システム構築においてよくあるLinuxサーバのパッケージのインストール作業を通して、構築対象サーバごとの作業とパッケージ管理を自動化・一元管理を行い、従来のシステム構築とは異なる効率的なシステム構築を体感できます。(【クイックスタート】より)
作業環境
今回は、以下の環境で進めていきます。
- Exastro IT Automation 1.9.0
- CentOS Linux7.8(ITAサーバ用)
- CentOS Linux7.8(ターゲットマシン用)
- Windows10(クライアント)
- Google Chrome(Win10側)
シナリオ
【仕込編】
- Playbookをアップロードしてジョブ(Movement)に紐付け
- ジョブ(Movement)をジョブフロー(Conductor)に組み込む
- CMDBにパラメータシートを設定
- パラメータシートの項目とPlaybookの変数を紐付け
【実行編 1回目】
5. 機器一覧にターゲットとなるLinuxマシンを登録
6. 作業名の(Operation)の登録
7. パラメータシートにデータを登録
8. ジョブフロー(Conductor)の実行
9. 実行結果の確認
【実行編 2回目】
10. 作業名(Operation)の登録
11. パラメータシートにデータを登録
12. ジョブフロー(Conductor)の実行
13. 実行結果の確認
【参考】
CMDBパラメータの履歴管理方法
シナリオ実行イメージ図
今回は、以下のPlaybookを使用します。
※文字コードは「UTF-8」、改行コードは「LF」、拡張子は「yml」形式で作成してください。
また、インデントにご注意ください。
ファイルアップロードができなかったり、実行エラーが発生します。
- name: install the latest version of packages
yum:
name: "{{ item }}"
state: latest
with_items:
- "{{ VAR_packages }}"
仕込編
1. Playbookをアップロードしてジョブに紐づけ
① 新規Movementを登録
ITAの以下のメニューから、「Movement一覧」へ新規Movementを登録します。
メニュー: Ansible-Legacy >> Movement一覧
以下のように登録します。
Movement名 | ホスト指定形式 |
---|---|
パッケージインストール | IP |
② 「Playbook素材集」へ新規Playbookを登録
ITAの以下のメニューから、作成したyum_package_install.yml
をPlaybook素材集へアップロードします。
メニュー: Ansible-Legacy >> Playbook素材集
以下のように登録します。
Playbook素材名 | Playbook素材 |
---|---|
yum_package_install | (作成したPlaybook) |
※Playbookをアップロードする場合「ファイル選択」を押下し、作成したymlファイルを選択した後、事前アップロードを押下しないと登録がうまく行えませんので、ご注意ください。
アップロード情報が表示されていることを確認した後、「登録」ボタンを押下してください。
③ アップロードしたPlaybookをMovementに紐づけ
ITAの以下のメニューから、アップロードしたPlaybookをMovementに紐付けます。
メニュー: Ansible-Legacy >> Movement-Playbook紐付
以下のように登録します。
Movement | Playbook素材 | インクルード順序 |
---|---|---|
パッケージインストール | yum_package_install | 1 |
2. ジョブ(Movement)をジョブフロー(Conductor)に組み込む
Conductorを作成する
ITAの以下のメニューから、Conductorを作成します。
メニュー: Conductor >> Conductorクラス編集
下図の順序の通り入力、移動、連結させ登録します。
①Conductorクラス編集を押下
②Conductor名に**「パッケージインストール」**と入力
③パッケージインストールを選択し、ドラッグ&ドロップ
④Conductorを連結
3. CMDBにパラメータシートを設定
パラメータシートの作成
ITAの以下のメニューから、パラメータシートを作成します。
メニュー: メニュー作成 >> メニュー定義/作成
以下のように登録します。
②メニュー作成情報
メニュー名 | 作成対象 | 表示順序 |
---|---|---|
インストールパッケージ一覧 | パラメータシート(ホスト/オペレーション含む) | 1 |
④カラムグループ
グループ名 |
---|
インストールパッケージ |
以下のように登録します。
今回は、プルダウン選択内にデフォルトで用意されているメニュー作成:選択1:*-(ブランク)を利用します。
「*」を選択するとインストール対象「ブランク(空白)」を選択するとインストールの対象外といった形で使用することができます。
項目名 | 入力方式 | 選択項目 |
---|---|---|
httpd | プルダウン選択 | メニュー作成:選択1:*-(ブランク) |
mariadb-server | プルダウン選択 | メニュー作成:選択1:*-(ブランク) |
php | プルダウン選択 | メニュー作成:選択1:*-(ブランク) |
perl | プルダウン選択 | メニュー作成:選択1:*-(ブランク) |
python | プルダウン選択 | メニュー作成:選択1:*-(ブランク) |
作成した「インストールパッケージ」グループに項目をドラッグ&ドロップします。
カラムグループに、項目をドラッグ&ドロップをすることで、1つのグループに複数の項目を設定することができます。
一覧(プレビュー)では、作成している帳票のプレビューが確認できます。
4. パラメータシートの項目とPlaybookの変数を紐付ける
ITAの以下メニューから、パラメータシートの項目とPlaybookの変数を代入値自動登録設定にて紐付けます。
代入値自動登録設定につきましては、下記をご参考ください。
代入値自動登録設定とは
変数の紐づけ登録方式には、以下の3つのタイプがあります。
登録方式 | 今回使用 | 説明 |
---|---|---|
Value型 | 基本的なタイプであり、表の中の値を変数に紐づけるものです。 | |
Key型 | ● | 表の項目(列名)を変数に紐づけるものです。 項目の設定値が空白の場合は紐づけ対象外になります。 |
Key-Value型 | 項目名称(Key)と設定値(Value)の両方を変数に紐づけることができます。 |
今回のシナリオでは、表の項目(列名)をPlaybookに具体値として代入したいので、登録方式は「Key型」を選択します。
詳細については、システム構築・運用の効率化ガイドブックを参照ください。
実際に、ITAの以下のメニューから代入値自動登録設定を行います。
メニュー: Ansible-Legacy >> 代入値自動登録設定
以下の登録を行います。
メニューグループ:メニュー | 項目 | 登録方式 | Movement | Key変数 変数名 |
代入順序 |
---|---|---|---|---|---|
代入値自動登録用:インストールパッケージ一覧 | パラメータ/インストールパッケージ/httpd | Key型 | パッケージインストール | VAR_packages | 1 |
代入値自動登録用:インストールパッケージ一覧 | パラメータ/インストールパッケージ/mariadb-server | Key型 | パッケージインストール | VAR_packages | 2 |
代入値自動登録用:インストールパッケージ一覧 | パラメータ/インストールパッケージ/php | Key型 | パッケージインストール | VAR_packages | 3 |
代入値自動登録用:インストールパッケージ一覧 | パラメータ/インストールパッケージ/perl | Key型 | パッケージインストール | VAR_packages | 4 |
代入値自動登録用:インストールパッケージ一覧 | パラメータ/インストールパッケージ/python | Key型 | パッケージインストール | VAR_packages | 5 |
ここまでが仕込編となります。一度設定することで繰り返し利用することが可能です。
実行編 1回目
5. 機器一覧にターゲットとなるLinuxマシンを登録
ITAの以下のメニューから、今回パッケージをインストールするターゲットホストを登録します。
登録する項目がたくさんありますが、Ansible-Legacyを実行するための必須項目は、以下の6項目です。
「ホスト名」「IPアドレス」「ログインユーザID」「ログインパスワード管理」「ログインパスワード」「認証方式」
メニュー: 基本コンソール >> 機器一覧
以下の項目を登録します。
自分のサーバに基づいて、登録を行ってください。
HW機器種別 | ホスト名 | IPアドレス | ログインユーザID | ログインパスワード管理 | ログインパスワード | Legacy/Role利用情報認識方式 |
---|---|---|---|---|---|---|
SV | (任意のホスト名) | (任意のIPアドレス) | (任意のログインユーザID | ● | (任意のパスワード) | パスワード認証 |
6. 作業名の(Operation)の登録
ITAの以下のメニューから、Operationの登録を行います。
メニュー: 基本コンソール >> オペレーション一覧
以下のように登録します。
オペレーション名 | 実行予定日時 |
---|---|
オペレーション1 | (任意の予定日時) |
7. パラメータシートにデータを登録
ITAの以下のメニューから、仕込編で用意したインストールパッケージ一覧にデータを入力していきます。
メニュー: 入力用 >> インストールパッケージ一覧
以下のように登録します。
ホスト名 | オペレーション名 | httpd | mariadb-server | php | perl | python |
---|---|---|---|---|---|---|
(機器一覧で登録したホスト名) | オペレーション1 | * | * | * | * |
表示フィルタを開き、「フィルタ」ボタンを押下すると登録したデータを確認することができます。
8. ジョブフロー(Conductor)の実行
ITAの以下のメニューから、実行を行います。
実行する「Conductor」と「オペレーション」を選択してください。
メニュー: Conductor >> Conductor作業実行
「Conductor作業確認」メニュー画面に切り替わります。
ジョブフローが正常終了すると、以下の画面が表示されターゲットマシンへの設定も完了です。
ジョブ(Movement)を選択し、Doneのアイコンまたは右側のOperation statusをクリックすると作業詳細を確認することができます。
投入データや結果データをダウンロードすることも可能です。
9. 実行結果の確認
作業状態確認から、Ansibleの実行ログをリアルタイムで確認することができます。
今回の実行では、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!
"]}
ターゲットマシンからでも、パッケージがインストールできていることを確認することができます。
$ 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回目
実行するターゲットを変更する必要がないため、実行1回目の6~9を行います。
それぞれ登録するデータが異なるので注意してください。
10. 作業名(Operation)の登録
ITAの以下のメニューから、Operationの登録を行います。
メニュー: 基本コンソール >> オペレーション一覧
以下のように登録します。
実施予定日時は、1回目で登録した日時よりも後の日時を選択してください。
オペレーション名 | 実施予定日時 |
---|---|
オペレーション2 | (任意の日時) |
11. パラメータシートにデータを登録
ITAの以下のメニューから、新規データを登録します。
メニュー: 入力用 >> インストールパッケージ一覧
以下のように登録します。
ホスト名 | オペレーション | httpd | mariadb-server | php | perl | python |
---|---|---|---|---|---|---|
(機器一覧で登録したホスト名) | オペレーション2 | * | * | * | * | * |
12. ジョブフロー(Conductor)の実行
ITAの以下のメニューから、実行する「Conductor」と「オペレーション」を選択し、
実行を行ってください。
メニュー: Conductor >> Conductor作業実行
実行すると「Conductor作業確認」メニュー画面に切り替わります。
ジョブフローが正常終了すると、以下の画面が表示されターゲットマシンへの設定も完了です。
実行編1回目同様、ジョブ(Movement)を選択し、Doneのアイコンまたは右側のOperation statusをクリックすると作業詳細を確認することができます。
投入データや結果データをダウンロードすることも可能です。
13. 実行結果の確認
作業状態確認から、Ansibleの実行ログをリアルタイムで確認することができます。
以下は実行ログから抽出したログの一部になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1983857/6d2d9cb5-638f-f79e-8707-bc3f5759345e.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",
""]}
今回の実行では、新にmariadb-serverのインストールを行いました。
その為、他のパッケージとの依存関係の解決、他の4つのパッケージ(httpd,php,perl,python)のバージョンアップが行われていることが確認できます。
また、すべて最新版であることが確認でき、サーバの状態が保たれたことがわかります。
【参考】 CMDBパラメータの履歴管理の方法
ITAはCMDBに「誰が・いつ・何をしたのか?」を履歴管理し、その時に時点でシステムのパラメータがどうなっているかを抽出できる機能があります。
ITAの以下のメニューから、実際にパラメータが管理できているかどうか確認していきます。
基準日時を入力せずにフィルタをかける
メニュー: 参照用 >> インストールパッケージ一覧
現時点での最新データが表示されることが確認できます。
2回目の実行を行った基準日時より前の日付を入力してフィルタをかける
1回目の実行を行った基準日時より前の日付を入力してフィルタをかける
まとめ
v1.9を利用して、クイックスタートに触れてみました。
今回、インストールのみの実行を行いましたが、実施いたしました手順踏むことで様々なことを自動化することが可能かと思います。(例:起動・通信許可・ファイルコピー)
また、こちらでは1つのMovementに対して1つのPlaybookのみを登録し実行しましたが、複数のPlaybookを登録することも可能ですのでぜひ試してみてください。
ExastroITAは現在v1.9まで公開されています。今後の新たな機能も気になるところです。