0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Exastro IT Automation 2.4.0 の収集比較機能を使ってみた【前編】

Last updated at Posted at 2024-06-27

はじめに

Exastro IT Automation(以下ITA)には、システムから設定値やファイルを取得してくる「収集機能」と収集した値を比較できる「比較機能」があります。
設計した値がちゃんと機器に設定されているか確認するのに便利そうなので試してみたいと思います。

収集機能のドキュメント
比較機能のドキュメント

収集比較機能とは

収集機能とは、ITAで行った作業の実行結果となるインベントリ(YAMLファイルとして出力されたソースファイル)をシステムから取得し、その値をITAのパラメータシートへ自動登録できる機能です。

収集比較の流れとしては以下の図のようになります。
① ITAから自動化ソフトウェアを介して、作業対象システムのインベントリを取得する。
② あらかじめ設定しておいたインベントリとパラメータシートとの紐付けをもとに、ITAのパラメータシートへ収集した値が自動登録される。

01.png

比較機能は、収集機能と合わせると以下のような活用ができます。
③ 期待値と実機から取得した値を比較する。
④ 取得した値同士を比較する。過去のある時点での値と、現在の値など。

比較機能概要

今回紹介するシナリオ

今回は以下4つのシナリオを紹介します。
収集機能は、パラメータ取得とファイル取得の2パターン。
比較機能は、取得したパラメータとファイルをそれぞれ別のデータと比較してみます。

  1. 【収集機能】パラメータ取得:ターゲットホストのOS情報を取得する
  2. 【収集機能】ファイル取得:ターゲットホストからSSL証明書を取得する
  3. 【比較機能】OS情報パラメータの比較
  4. 【比較機能】SSL証明書の比較

前編である本記事では収集機能の確認をします。

↓後編はこちら
Exastro IT Automation の収集比較機能を使ってみた【後編】

作業環境

今回の以下の作業環境で実施します。
image.png

1. 【収集機能】パラメータ取得:ターゲットホストのOS情報を取得する

それではシナリオ1から始めたいと思います。

流れとしては下図のようになります。
image.png

1.1 Ansible共通 >> 機器一覧

まずはターゲットホストの接続情報を登録します。
登録画面はこのようになっているので、赤枠内の必須項目を入力。下表には今回設定した内容を書いています。
image.png
image.png

HW機器種別 ホスト名 IPアドレス ユーザID パスワード 認証方式 接続タイプ
SV targethost 対象サーバのIPアドレス root rootユーザのパスワード パスワード認証 machine

1.2 基本コンソール >> オペレーション一覧

今回のオペレーションを登録します。
オペレーションは、ITAの自動作業一式を指します。これに、のちのち関連するすべてのデータを紐付けていきます。

今回は、後述しますがPlaybookのファイル名がGatherFacts.ymlなので、オペレーション名はGatherFacts1としました。
image.png

オペレーション名(任意の名称) 実施予定日時(任意の時間)(※)
GatherFacts1 現在時刻を入力

※ 実施予定時間は情報として入力できるようになっているもので、タイマーではありません。

1.3 Ansible-Legacy >> Movement一覧

Ansible-LegacyのMovementを登録します。
Movementとは、ITAの自動作業の最小単位で、ジョブを表します。
今回はこのあとPlaybookに紐付けて、OS情報を収集するMovementとなります。
image.png

Movement名(任意の名称) Ansible利用情報 > ホスト指定形式(プルダウンから選択) Ansible利用情報 > ヘッダーセクション
GatherFacts IP 下記のヘッダーセクションを記載
ヘッダーセクション
- hosts: all
  remote_user: "{{ __loginuser__ }}"
  gather_facts: yes
  become: yes

今回はgather_factsを使ってOS情報を取得しようとしているため、
gather_facts: no → gather_facts: yes に変更して、
become: yes を追記しておく必要があります。

1.4 Ansible-Legacy >> Playbook素材集

Playbookを登録します。
今回はこちらのPlaybookを使用しました。
YAMLファイルを生成し、OS情報を取得してくるという内容です。

GatherFacts.yml
- name: set variable
  set_fact:
    test: "{{ VAR_parameter }}"

- name: make yaml file
  blockinfile:
    create: yes
    mode: 644
    insertbefore: EOF
    marker: ""
    dest: "/tmp/gatherfacts.yml"
    content: |
      ansible_architecture              : {{ ansible_architecture }}
      ansible_bios_version              : {{ ansible_bios_version }}
      ansible_default_ipv4__address     : {{ ansible_default_ipv4.address }}
      ansible_default_ipv4__interface   : {{ ansible_default_ipv4.interface }}
      ansible_default_ipv4__network     : {{ ansible_default_ipv4.network }}
      ansible_distribution              : {{ ansible_distribution }}
      ansible_distribution_file_path    : {{ ansible_distribution_file_path }}
      ansible_distribution_file_variety : {{ ansible_distribution_file_variety }}
      ansible_distribution_major_version: {{ ansible_distribution_major_version }}
      ansible_distribution_release      : {{ ansible_distribution_release }}
      ansible_distribution_version      : {{ ansible_distribution_version }}
      ansible_machine                   : {{ ansible_machine }}
      ansible_memtotal_mb               : {{ ansible_memtotal_mb }}
      ansible_nodename                  : {{ ansible_nodename }}
      ansible_os_family                 : {{ ansible_os_family }}
      ansible_pkg_mgr                   : {{ ansible_pkg_mgr }}
      ansible_processor_cores           : {{ ansible_processor_cores }}

- name: Copy the make yaml file to local
  fetch:
    src: "/tmp/gatherfacts.yml"
    dest: "{{ __parameter_dir__ }}/{{ inventory_hostname }}/"
    flat: yes

なぜYAMLファイル?
ITAでは、収集結果ファイルはYAML形式に指定されているようです。そのためYAMLファイルを生成する必要があります。
また生成されたYAMLファイルは、以下の収集用のディレクトリに格納することになっています。
118.png

パスの変数
パスの変数はこのようになっています。
b_05.png

Playbookが用意できたら、登録画面から以下を入力します。

image.png

Playbook素材名(任意の名称) Playbook素材
GatherFacts GatherFacts.yml

1.5 Ansible-Legacy >> Movement-Playbook紐付

それでは登録したMovementとPlaybookを紐付けます。

image.png

Movement(プルダウンから選択) Playbook素材(プルダウンから選択) インクルード順序
GatherFacts GatherFacts 1

1.6 Ansible-Legacy >> 作業対象ホスト

登録したオペレーションと作業対象ホストを紐付けます。

メニュー作成
まず、パラメータシート作成 >> パラメータシート定義・作成 から「入力用」「代入値自動登録用」「参照用」メニューグループの中に作業対象ホストとの紐付用のメニューを作成します。
メニュー定義・作成の画面は他のメニューと違ってこのようなGUIになっており、①基本情報・②対象メニューグループ・③項目の3つのエリアに必要な情報を入力するようになっています。

↓メニュー定義画面の例
09.png

それでは作成していきます。
以下のように設定します。
image.png

①基本情報は以下の4か所。

パラメータシート名 パラメータシート名(REST) 作成対象(プルダウンから選択) 表示順序
ホスト紐付け用 host_association パラメータシート(ホスト/オペレーションあり) 2

②対象メニューグループは作成したメニューが所属するメニューグループを指定するものですが、今回はデフォルト値にしておきます。
パラメータシート作成情報」タブと対象メニューグループの詳細はこちら

入力用 代入値自動登録用 参照用
入力用 代入値自動登録用 参照用

③項目は以下の4か所。
ここではホストとオペレーションを紐づけるためだけのメニューを作成します。
パラメータが定義が空の状態だとホストとオペレーションを紐づけることが出来ないため、適当な項目を設定しているだけで「test」というパラメータ自体には特に意味はありません。

項目名(任意の名称) REST API項目名(任意の名称) 入力方式 最大バイト数(任意の値)
parameter parameter 文字列(単一行) 32

ホストとオペレーションの紐付け
今作成したメニューにホストとオペレーションを登録します。
入力用 >> ホスト紐付け用から作業対象ホストとオペレーションとパラメータを登録します。
image.png

メニューが作成出来たら、Ansible-Legacy >> 代入値自動登録設定 に行き、パラメータシートの項目名とPlaybookの変数、Movementを紐づけます。
image.png

メニューグループ:メニュー項目 登録方式 Movement名 Movement名:変数名
代入値自動登録用:ホスト紐付け用:パラメータ/parameter Value型 GatherFacts VAR_parameter

これで今回のオペレーションではどのホストに作業を行うのかということが紐付けられました。

1.7 メニュー作成 >> メニュー定義・作成

それでは、収集してきた値の受け皿となるパラメータシートを作成していきます。

「入力用」「代入値自動登録用」「参照用」メニューグループの中に「Gathered Facts」メニューを作成します。このメニューの中に「パラメータシート」の欄ができ、さらにその中の各項目に取得した値が入ります。

それでは入力していきます。
①基本情報は以下の4か所。

パラメータシート名 パラメータシート名(REST) 作成対象(プルダウンから選択) 表示順序
Gathered Facts Gathered_Facts パラメータシート(ホスト/オペレーションあり) 1

②対象メニューグループは作成したメニューが所属するメニューグループを指定するものですが、今回はデフォルト値にしておきます。
「パラメータシート作成情報」タブと対象メニューグループの詳細はこちら

入力用 代入値自動登録用 参照用
入力用 代入値自動登録用 参照用

③項目は以下の4か所を入力します。
image.png

今回はPlaybookの変数が17個あるので、これを17個作ります。左上の「項目」ボタンを押すと新規項目が作成されます。
なお、項目名はPlaybookの変数名に対応しているとわかりやすいです。

項目名(任意の名称) 入力方式 最大バイト数(任意の値)
ansible_architecture 文字列(単一行) 128
ansible_bios_version 文字列(単一行) 128
ansible_default_ipv4 > address(※) 文字列(単一行) 128
ansible_default_ipv4 > interface(※) 文字列(単一行) 128
ansible_default_ipv4 > network(※) 文字列(単一行) 128
ansible_distribution 文字列(単一行) 128
ansible_distribution_file_path 文字列(単一行) 128
ansible_distribution_file_variety 文字列(単一行) 128
ansible_distribution_major_version 文字列(単一行) 128
ansible_distribution_release 文字列(単一行) 128
ansible_distribution_version 文字列(単一行) 128
ansible_machine 文字列(単一行) 128
ansible_memtotal_mb 文字列(単一行) 128
ansible_nodename 文字列(単一行) 128
ansible_os_family 文字列(単一行) 128
ansible_pkg_mgr 文字列(単一行) 128
ansible_processor_cores 文字列(単一行) 128

※ ansible_default_ipv4というグループを作り、その中にこの3項目を入れ込みます。

全部入力したらこんな感じで、項目がずらっと並んだ形になります。
OKなら作成ボタンを押します。

image.png

これで「入力用」「代入値自動登録用」「参照用」メニューグループの中に「Gathered Facts」メニュー(パラメータシート)が作成されます。

入力用 >> Gathered Facts のメニューに遷移して、たくさん作った項目もきちんと出来ているか確認。
ここではパラメータを何も登録しなくて良いです。
image.png

1.8 Ansible共通 >> 収集項目値管理

収集項目値管理では、収集項目(FROM)であるYAMLファイル名・変数名と、パラメータシート(TO)であるメニュグループ名・メニュー名・項目名を紐付けます。

入力する箇所はこちら。

image.png

収集項目(FROM)

パース形式(プルダウンから選択) PREFIX(ファイル名) 変数名
YAML gatherfacts 下記の変数名を記載

パラメータシート(TO)

メニューグループ:メニュー:項目(プルダウンから選択)
下記の項目を記載

今回は17個分変数名と項目名を対応させ登録させていきます。

変数名 項目
ansible_architecture パラメータ/ansible_architecture
ansible_bios_version パラメータ/ansible_bios_version
ansible_default_ipv4__address パラメータ/ansible_default_ipv4/address
ansible_default_ipv4__interface パラメータ/ansible_default_ipv4/interface
ansible_default_ipv4__network パラメータ/ansible_default_ipv4/network
ansible_distribution パラメータ/ansible_distribution
ansible_distribution_file_path パラメータ/ansible_distribution_file_path
ansible_distribution_file_variety パラメータ/ansible_distribution_file_variety
ansible_distribution_major_version パラメータ/ansible_distribution_major_version
ansible_distribution_release パラメータ/ansible_distribution_release
ansible_distribution_version パラメータ/ansible_distribution_version
ansible_machine パラメータ/ansible_machine
ansible_memtotal_mb パラメータ/ansible_memtotal_mb
ansible_nodename パラメータ/ansible_nodename
ansible_os_family パラメータ/ansible_os_family
ansible_pkg_mgr パラメータ/ansible_pkg_mgr
ansible_processor_cores パラメータ/ansible_processor_cores

また、今回のようにパラメータの登録件数が多い時は、エクセルによる一括登録がおすすめです。
エクセルをダウンロードからセルに登録したい内容を記載、アップロードすることでまとめて登録できます。
image.png

エクセルは以下のように記載しました。
image.png

1.9 Ansible-Legacy >> 作業実行

登録したMovementとオペレーションを選択します。これですべての情報の紐付け完了です。
それでは実行ボタンを押してみます。
image.png

image.png

image.png

image.png

作業状態確認で、ステータスが完了になれば作業完了です。
image.png

ちなみに…
Ansible-Legacy >> 作業管理 からも収集結果が確認できます。
「収集状況」という項目があるので、成功していればステータスが「収集済み」、失敗していれば「対象外」と表示されます。
image.png

1.10 入力用(参照用でもOK) >> Gathered Facts

値が収集されているか確認します。
「フィルタ」を押して一覧を表示し、該当パラメータを確認。

該当のオペレーションのパラメータを見ます。
image.png

空だったパラメータがうまく収集できていれば成功です!
画像では割愛していますが、すべてのパラメータに値が入っているはずです。
image.png

2. 【収集機能】ファイル取得:ターゲットホストからSSL証明書を取得する

ファイル取得も、流れとしてはパラメータ取得と同じで下図のようになります。

今回は事前にターゲットホストの/etc/pki/tls/certs配下にtest.crtを置いておいたので、それを取得してきます。
ファイルを取得すること自体の検証なのでファイルの中身は適当な文字列でもなんでも良いです。
image.png

2.1 基本コンソール >> 機器一覧

今回は1.1と同じターゲットホストになるので、このままでOKです。

2.2 基本コンソール >> オペレーション一覧

今回のオペレーションを登録します。

image.png

オペレーション名(任意の名称) 実施予定日時(任意の時間)(※)
getSSL1 現在時刻を入力

※ 実施予定時間は情報として入力できるようになっているもので、タイマーではありません。

2.3 Ansible-Legacy >> Movement一覧

Movementを登録します。
この後Playbookに紐付けることで、SSL証明書を取得してくるジョブとなります。

image.png

Movement名(任意の名称) Ansible利用情報 > ホスト指定形式(プルダウンから選択) Ansible利用情報 > ヘッダーセクション
getSSL IP 下記のヘッダーセクションを記載
ヘッダーセクション
- hosts: all
  remote_user: "{{ __loginuser__ }}"
  gather_facts: no
  become: yes

2.4 Ansible-Legacy >> Playbook素材集

Playbookを登録します。
今回はこちらのPlaybookを使用しました。
SSL証明書ファイル取得のためのYAMLファイルを作成 → SSL証明書ファイルを収集ディレクトリにコピーする という内容です。
事前にターゲットホストの/etc/pki/tls/certs配下にtest.crtを格納しておいて下さい。

getSSL.yml
- name: make yaml file
  blockinfile:
    create: yes
    mode: 644
    insertbefore: EOF
    marker: ""
    dest: "/tmp/getSSL.yml"
    content: |
      SSL_file_name                    : "{{ VAR_ssl_name }}"
      SSL_file                         : "{{ VAR_ssl_name }}"

- name: Copy the make yaml file to local
  fetch:
    src: "/tmp/getSSL.yml"
    dest: "{{ __parameter_dir__ }}/{{ inventory_hostname }}/"
    flat: yes

- name: get SSL file
  fetch:
    src: /etc/pki/tls/certs/{{ VAR_ssl_name }}
    dest: "{{ __parameters_file_dir__ }}/{{ inventory_hostname }}/"
    flat: yes

収集されたSSL証明書は、以下のディレクトリに格納されます。
119.png

パスの変数はこのようになっています。
b_05.png

Playbookが用意できたら、以下を登録します。

Playbook素材名(任意の名称) Playbook素材
getSSL getSSL.yml

image.png

2.5 Ansible-Legacy >> Movement-Playbook紐付

登録したMovementとPlaybookを紐付けます。

Movement(プルダウンから選択) Playbook素材(プルダウンから選択) インクルード順序
getSSL getSSL 1

image.png

2.6 Ansible-Legacy >> 代入値自動登録設定

次に、Playbook内の変数(VAR_ssl_name)に具体値(test.crt)を代入します。
直接値を打ち込む方法とパラメータシートの値を代入する方法の2パターンあるようですが、今回は後者にします。

メニュー作成 >> メニュー定義・作成
以下を入力してメニューを作成(メニュー作成の詳細は1.7や2.7を参照ください)。
※デフォルトのままで良い値は割愛しています。

image.png

①基本情報は以下の4か所を入力。

パラメータシート名(任意の名称) パラメータシート名(REST) 作成対象(プルダウンから選択) 表示順序
SSL証明書名 ssl_certificate_name パラメータシート(ホスト/オペレーションあり) 4

②対象メニューグループは作成したメニューが所属するメニューグループを指定するものですが、今回はデフォルト値にしておきます。

入力用 代入値自動登録用 参照用
入力用 代入値自動登録用 参照用

③項目は2つ作り、それぞれ以下の4か所を入力します。

項目名(任意の名称) 項目名(REST) 入力方式(プルダウンから選択) 最大バイト数(任意の値)
ファイル名 file_name 文字列(単一行) 128

入力用 >> SSL証明書名
作成したメニューへ。これがパラメータシートとなります。
ホスト名とオペレーションを選択し、ファイル名にtest.crtと入力。
image.png

ホスト名(プルダウンから選択) オペレーション パラメータ > ファイル名
targethost getSSL1 test.crt

さて、仕込ができたら、Ansible-Legacy >> 代入値自動登録設定 に行き、パラメータシートの項目名とPlaybookの変数、Movementを紐づけます。
image.png

メニューグループ:メニュー項目 登録方式 Movement名 Movement名:変数名
代入値自動登録用:SSL証明書名:パラメータ/ファイル名 Value型 getSSL VAR_ssl_name

これで、VAR_ssl_nameとtest.crtがつながりました。

2.7 メニュー作成 >> メニュー定義・作成

それでは、1のシナリオ同様、収集した値の受け皿となるパラメータシートを作っていきます。

「入力用」「代入値自動登録用」「参照用」メニューグループの中に「SSL証明書」メニューを作成します。このメニューからSSL証明書がダウンロードできるようになります。

image.png

①基本情報は以下の4か所を入力。

パラメータシート名(任意の名称) パラメータシート名(REST) 作成対象(プルダウンから選択) 表示順序
SSL証明書 ssl_certificate パラメータシート(ホスト/オペレーションあり) 2

②対象メニューグループは作成したメニューが所属するメニューグループを指定するものですが、今回はデフォルト値にしておきます。

入力用 代入値自動登録用 参照用
入力用 代入値自動登録用 参照用

③項目は2つ作り、それぞれ4か所を入力します。

項目名(任意の名称) 項目名(REST) 入力方式(プルダウンから選択) 最大バイト数(任意の値)
ファイル名 file_name 文字列(単一行) 128
項目名(任意の名称) 項目名(REST) 入力方式(プルダウンから選択) ファイル最大バイト数(任意の値)
ファイル file ファイルアップロード 1000000

image.png

入力したら作成ボタンから作成します。

これで「入力用」メニューグループの中に「SSL証明書」メニュー(パラメータシート)が作成できました。
image.png

2.8 Ansible共通 >> 収集項目値管理

収集項目値管理では、収集項目(FROM)であるYAMLファイル名・変数名と、パラメータシート(TO)であるメニュグループ名・メニュー名・項目名を紐付けます。

入力する箇所はこちら。
image.png

収集項目(FROM)

パース形式(プルダウンから選択) PREFIX(ファイル名) 変数名
YAML getSSL 下記の変数名を記載

パラメータシート(TO)

メニューグループ:メニュー(プルダウンから選択) 項目(プルダウンから選択)
代入値自動登録用:5:SSL証明書 下記の項目を記載

今回は2個分変数名と項目を対応させ登録させていきます。

変数名 項目
SSL_file_name パラメータ/ファイル名
SSL_file パラメータ/ファイル

2.9 Ansible-Legacy >> 作業実行

登録したMovementとオペレーションを選択します。これですべての情報の紐付け完了です。
画像は割愛しますが、1.9 と同様に実行します。

image.png

2.10 入力用 >> SSL証明書

値が収集されているか確認します。
「フィルタ」を押して一覧を表示し、該当パラメータを確認。
image.png

パラメータに値が収集され、SSL証明書(test.crt)がダウンロードできれば成功です!

まとめ

今回はITAの「収集機能」を使ってみました。
作業対象のサーバから設定値やファイルを取得して、自動でパラメータシートに登録されることが確認できました。
次回は「比較機能」を使ってみます。

↓【後編】比較機能の記事
Exastro IT Automation の収集比較機能を使ってみた【後編】

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?