LoginSignup
6
2

More than 3 years have passed since last update.

Exastro IT Automation ver1.6.0のキホンの"キ"

Last updated at Posted at 2020-12-14

関連リンク

はじめに

2020/11/25にExastro IT Automation Ver1.6.0(以下ITAver1.6.0)がリリースされました。

ITAver1.6.0で追加された機能として、主に以下の4点があります。

  • メインメニュー画面にWidgetを配置することができ、リンクや画像も配置可能になった。
  • アクセス権がロール・メニュー紐付管理のメニュー単位での管理に加え、レコード単位での管理となった。
  • パラメータシートのカラムにパスワード、フィルアップロード、リンクが作成できるようになった。
  • サーバなどの機器へパラメータを収集するplaybookを実施し、収集した値をパラメータシートに自動登録することができるようになった。

本記事ではExastro IT Automation ver1.5.0のキホンの"キ"を参考に、ITAver1.6.0で進めようと思います。
また、Conductor実施時には(簡単にですが)分岐機能を使っての処理を追加してみたいと思います。

作業環境

2台のターゲットサーバにそれぞれ異なるディレクトリを作成します。

図1-1.png

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

今回紹介するシナリオ

まず、Playbookを実行できるようにし、パラメータシートとPlaybookの変数を紐付けを行います。
次に、CMDBにパラメータシートを設定し、データを登録します。
そして、高度なジョブフロー(Conductor)を実行します。

【仕込編】1. Playbookをアップロードしてジョブ(Movement)に紐付ける
【仕込編】2. ジョブ(Movement)をジョブフロー(Conductor)に組み込む
【仕込編】3. CMDBにパラメータシートを設定
【仕込編】4. パラメータシートの項目とPlaybookの変数の紐づけ
【仕込編】5. ITAのCMDBの機器一覧(デフォルト)にターゲットとなるLinuxマシンを登録
【実行編】6. 作業名(Operation)の登録
【実行編】7. パラメータシートにデータを登録
【実行編】8. ジョブフロー(Conductor)の実行
【実行編】9. 実行結果の確認

図1.png

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

mkdir.yml
- name: Make Directory
  file:
    path: "{{ VAR_dir_name }}"
    owner: "{{ VAR_owner }}"
    group: "{{ VAR_group }}"
    mode: "{{ VAR_mode }}"
    state: directory
error_output.yml
- name: Error Output
  shell: echo "`date '+%Y/%m/%d %H:%M:%S'` failed to make directory "{{ VAR_dir_name }}"" >> /tmp/error_log

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

1.1 Movementを登録

「Ansible-Legacy 」メニューグループ >> 「Movement一覧」メニュー
を選択し、登録します。

登録したデータは以下です。

Movement名 ホスト指定形式
ディレクトリ作成 IP
エラーファイル出力 IP

図2.png

ITA 1.6.0で追加されたアクセス権

ITA1.5.0以前では、メニュー単位でのアクセス権管理(ロール・メニュー紐付管理)のみとなっていましたが、
ITA1.6.0から登録するレコード単位でアクセス権の設定が可能となっています。
図4-2.png

1.2 Playbookアップロード

「Ansible-Legacy 」メニューグループ >> 「プレイブック素材集」メニュー
を選択し、用意したmkdir.ymlerror_output.ymlをプレイブック素材にアップロードを行います。

登録するデータは以下です。

プレイブック素材名 プレイブック素材
mkdir mkdir.yml
error_output error_output.yml

図3.png

ファイルをアップロードするときのハマりどころ

playbookをアップロードする際には、事前アップロードボタンを押してから登録ボタンを押す必要があります。
図4.png

1.3 アップロードしたplaybookをMovementに紐付け

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

登録するデータは以下です。

Movement プレイブック素材 インクルード順序
1:ディレクトリ作成 mkdir 1
2:エラーファイル出力 error_output 1

図5.png

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

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

【仕込編】2. ジョブ(Movement)をジョブフロー(Conductor)に組み込む

「Conductor」メニューグループ >> 「Conductorクラス編集」メニュー
を選択し、Nameを設定し、右側のMovementタブから作成したMovementをドラッグ&ドロップします。
今回のシナリオでは2つのMovementを扱い、エラー時の動作も準備します。
functionタブには条件分岐や別のジョブフロー(Conductor)を呼び出す部品群がありますので、作成したいジョブフロー(Conductor)に合わせて利用することが可能となっています。

図6.png
図6-2.png

【仕込編】3. CMDBにパラメータシートを設定

ところで、ITAのメニューグループとメニューの関係について、改めて整理してみました。
下図のように、メニューグループ内にたくさんのメニューが入っていて、
メニュー=パラメータシートと考えてよいと思います。

図7.png

今回、新しいパラメータシートを設定する、つまりメニューを作ることになります。
作成するメニューにはその置き場となるメニューグループが必要ですので、
まずはメニューグループを登録します。
それから、メニュー(=パラメータシート)を設定します。

図8.png

詳しくは、ITAの利用手順マニュアル メニュー作成機能を参照ください。

3-1. パラメータシートのメニュー名を定義する

「メニュー作成」メニューグループ >> 「メニュー定義/作成」メニュー
を選択し、登録します。

下記図の②で登録するデータは以下です。

メニュー名 作成対象 表示順序
ディレクトリ設定 パラメータシート(ホスト/オペレーション含む) 1

図12.png

下記図の⑦で登録するデータは以下です。
単一行以外の表記については、利用手順マニュアル メニュー作成機能に記載がありますが、今後、パラメータシートの作成詳細編を記事公開したいと思います。

項目名 入力方式 最大バイト数
path 文字列(単一行) 32
owner 文字列(単一行) 32
group 文字列(単一行) 32
mode 文字列(単一行) 32

図13.png


3-2. 作成したパラメータシートを確認する

「メニュー作成」メニューグループ >> 「メニュー作成履歴」メニュー
から作成したパラメータシートを確認します。

図14.png

メニューを再作成するときのハマりどころ

既存のメニューに対してメニュー作成開始ボタンを押下すると、メニューの再作成として、登録済みのデータは削除されます。

【仕込編】4. パラメータシートの項目とPlaybookの変数の紐付け

パラメータシートの項目とPlaybookの変数を紐付けます。
一度紐付け設定を行っておけば、パラメータシートにデータを登録するだけで、Playbook実行時に登録データが利用できます。

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

登録するデータは以下です。

メニューグループ:メニュー 項目 登録方式 Movement Value変数
変数名
1:サーバ基本設定:1:ディレクトリ設定 パラメータ/path Value型 1:mkdir 1:VAR_dir_name
1:サーバ基本設定:1:ディレクトリ設定 パラメータ/owner Value型 1:mkdir 2:VAR_owner
1:サーバ基本設定:1:ディレクトリ設定 パラメータ/group Value型 1:mkdir 3:VAR_group
1:サーバ基本設定:1:ディレクトリ設定 パラメータ/mode Value型 1:mkdir 4:VAR_mode
1:サーバ基本設定:1:ディレクトリ設定 パラメータ/path Value型 2:error_output 5:VAR_dir_name

図15.png

【仕込編】5. ITAのCMDBの機器一覧(デフォルト)にターゲットとなるLinuxマシンを登録

「基本コンソール」メニューグループ >> 「機器一覧」メニュー
を選択し、登録します。

登録するデータは以下です。

HW機器種別 ホスト名 IPアドレス ログインユーザID ログインパスワード
管理
ログインパスワード Legacy/Role利用情報
認証方式
SV target101 10.197.18.77 root ******** パスワード認証
SV target102 10.197.18.79 root ******** パスワード認証

図16.png

【実行編】6. 作業名(Operation)の登録

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

登録するデータは以下です。

オペレーション名 実施予定日時
ディレクトリ作成作業 2020/12/04 12:00

図17.png

【実行編】7. パラメータシートにデータを登録

いよいよターゲットマシンに設定するデータの登録を行います。
データの登録先は前の手順で設定したパラメータシートです。

「入力用」メニューグループ >> 「ディレクトリ設定」メニュー
を選択し、登録します。

登録するデータは以下です。

ホスト名 オペレーション path owner group mode
target101 2020/12/04 12:00_1:ディレクトリ作成作業 /work1 root root 0644
target102 2020/12/04 12:00_1:ディレクトリ作成作業 /work2 root root 0755

図18.png

【実行編】8. ジョブフロー(Conductor)の実行

最後に、ターゲットマシンへ登録データを設定します。

「Conductor」メニューグループ >> 「Conductor作業実行」メニュー
を選択し、作成したジョブフロー(Conductor)と作業名(Operation)のラジオボタンを選択し、実行ボタンをクリックします。

図19.png

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

図20.png

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

図21.png

ディレクトリ作成が失敗した場合、条件分岐が行われエラーファイル出力が実行されます。
図22.png

【実行編】9. 実行結果の確認

パラメータシートに登録したデータが反映できているか確認しました。
ターゲットマシンに接続して、作成したディレクトリを確認しました。

target101
$ ll / | grep work
drw-r--r--   2 root root    6 Dec  4 21:17 work1
target102
$ ll / | grep work
drwxr-xr-x   2 root root    6 Dec  4 21:17 work2

パラメータシートに登録したデータが設定されていることを確認できました。

ディレクトリ作成が失敗した場合には、エラーファイル出力が実行され、エラーログが出力されます。

$ cat /tmp/error_output
2020/12/04 21:17:30 failed to make directory /work1

まとめ

Exastro IT Automation ver1.5.0のキホンの"キ"をITAver1.6.0で実施してみました。

今回はシンプルなシナリオに、成否での分岐機能を追加してみましたが、
Conductorには、平行処理機能や一時停止機能、
他のジョブフロー(Conductor,Symphony)呼出など様々な機能があります。
それらを組み合わせることで、より複雑な作業を自動化できると考えています。

関連リンク

6
2
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
6
2