はじめに
Exastro IT Automation(以下ITA)には、システムから設定値やファイルを取得してくる「収集機能」と収集した値を比較できる「比較機能」があります。
設計した値がちゃんと機器に設定されているか確認するのに便利そうなので試してみたいと思います。
収集比較機能とは
収集機能とは、ITAで行った作業の実行結果となるインベントリ(YAMLファイルとして出力されたソースファイル)をシステムから取得し、その値をITAのパラメータシートへ自動登録できる機能です。
収集比較の流れとしては以下の図のようになります。
① ITAから自動化ソフトウェアを介して、作業対象システムのインベントリを取得する。
② あらかじめ設定しておいたインベントリとパラメータシートとの紐付けをもとに、ITAのパラメータシートへ収集した値が自動登録される。
比較機能は、収集機能と合わせると以下のような活用ができます。
③ 期待値と実機から取得した値を比較する。
④ 取得した値同士を比較する。過去のある時点での値と、現在の値など。
今回紹介するシナリオ
今回は以下4つのシナリオを紹介します。
収集機能は、パラメータ取得とファイル取得の2パターン。
比較機能は、取得したパラメータとファイルをそれぞれ別のデータと比較してみます。
- 【収集機能】パラメータ取得:ターゲットホストのOS情報を取得する
- 【収集機能】ファイル取得:ターゲットホストからSSL証明書を取得する
- 【比較機能】OS情報パラメータの比較
- 【比較機能】SSL証明書の比較
前編である本記事では収集機能の確認をします。
↓後編はこちら
Exastro IT Automation の収集比較機能を使ってみた【後編】
作業環境
1. 【収集機能】パラメータ取得:ターゲットホストのOS情報を取得する
それではシナリオ1から始めたいと思います。
1.1 Ansible共通 >> 機器一覧
まずはターゲットホストの接続情報を登録します。
登録画面はこのようになっているので、赤枠内の必須項目を入力。下表には今回設定した内容を書いています。
HW機器種別 | ホスト名 | IPアドレス | ユーザID | パスワード | 認証方式 | 接続タイプ |
---|---|---|---|---|---|---|
SV | targethost | 対象サーバのIPアドレス | root | rootユーザのパスワード | パスワード認証 | machine |
1.2 基本コンソール >> オペレーション一覧
今回のオペレーションを登録します。
オペレーションは、ITAの自動作業一式を指します。これに、のちのち関連するすべてのデータを紐付けていきます。
今回は、後述しますがPlaybookのファイル名がGatherFacts.ymlなので、オペレーション名はGatherFacts1としました。
オペレーション名(任意の名称) | 実施予定日時(任意の時間)(※) |
---|---|
GatherFacts1 | 現在時刻を入力 |
※ 実施予定時間は情報として入力できるようになっているもので、タイマーではありません。
1.3 Ansible-Legacy >> Movement一覧
Ansible-LegacyのMovementを登録します。
Movementとは、ITAの自動作業の最小単位で、ジョブを表します。
今回はこのあとPlaybookに紐付けて、OS情報を収集するMovementとなります。
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情報を取得してくるという内容です。
- 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ファイルは、以下の収集用のディレクトリに格納することになっています。
Playbookが用意できたら、登録画面から以下を入力します。
Playbook素材名(任意の名称) | Playbook素材 |
---|---|
GatherFacts | GatherFacts.yml |
1.5 Ansible-Legacy >> Movement-Playbook紐付
それでは登録したMovementとPlaybookを紐付けます。
Movement(プルダウンから選択) | Playbook素材(プルダウンから選択) | インクルード順序 |
---|---|---|
GatherFacts | GatherFacts | 1 |
1.6 Ansible-Legacy >> 作業対象ホスト
登録したオペレーションと作業対象ホストを紐付けます。
メニュー作成
まず、パラメータシート作成 >> パラメータシート定義・作成 から「入力用」「代入値自動登録用」「参照用」メニューグループの中に作業対象ホストとの紐付用のメニューを作成します。
メニュー定義・作成の画面は他のメニューと違ってこのようなGUIになっており、①基本情報・②対象メニューグループ・③項目の3つのエリアに必要な情報を入力するようになっています。
①基本情報は以下の4か所。
パラメータシート名 | パラメータシート名(REST) | 作成対象(プルダウンから選択) | 表示順序 |
---|---|---|---|
ホスト紐付け用 | host_association | パラメータシート(ホスト/オペレーションあり) | 2 |
②対象メニューグループは作成したメニューが所属するメニューグループを指定するものですが、今回はデフォルト値にしておきます。
パラメータシート作成情報」タブと対象メニューグループの詳細はこちら
入力用 | 代入値自動登録用 | 参照用 |
---|---|---|
入力用 | 代入値自動登録用 | 参照用 |
③項目は以下の4か所。
ここではホストとオペレーションを紐づけるためだけのメニューを作成します。
パラメータが定義が空の状態だとホストとオペレーションを紐づけることが出来ないため、適当な項目を設定しているだけで「test」というパラメータ自体には特に意味はありません。
項目名(任意の名称) | REST API項目名(任意の名称) | 入力方式 | 最大バイト数(任意の値) |
---|---|---|---|
parameter | parameter | 文字列(単一行) | 32 |
ホストとオペレーションの紐付け
今作成したメニューにホストとオペレーションを登録します。
入力用 >> ホスト紐付け用から作業対象ホストとオペレーションとパラメータを登録します。
メニューが作成出来たら、Ansible-Legacy >> 代入値自動登録設定 に行き、パラメータシートの項目名とPlaybookの変数、Movementを紐づけます。
メニューグループ:メニュー項目 | 登録方式 | Movement名 | Movement名:変数名 |
---|---|---|---|
代入値自動登録用:ホスト紐付け用:パラメータ/parameter | Value型 | GatherFacts | VAR_parameter |
これで今回のオペレーションではどのホストに作業を行うのかということが紐付けられました。
1.7 メニュー作成 >> メニュー定義・作成
それでは、収集してきた値の受け皿となるパラメータシートを作成していきます。
「入力用」「代入値自動登録用」「参照用」メニューグループの中に「Gathered Facts」メニューを作成します。このメニューの中に「パラメータシート」の欄ができ、さらにその中の各項目に取得した値が入ります。
それでは入力していきます。
①基本情報は以下の4か所。
パラメータシート名 | パラメータシート名(REST) | 作成対象(プルダウンから選択) | 表示順序 |
---|---|---|---|
Gathered Facts | Gathered_Facts | パラメータシート(ホスト/オペレーションあり) | 1 |
②対象メニューグループは作成したメニューが所属するメニューグループを指定するものですが、今回はデフォルト値にしておきます。
「パラメータシート作成情報」タブと対象メニューグループの詳細はこちら
入力用 | 代入値自動登録用 | 参照用 |
---|---|---|
入力用 | 代入値自動登録用 | 参照用 |
今回は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なら作成ボタンを押します。
これで「入力用」「代入値自動登録用」「参照用」メニューグループの中に「Gathered Facts」メニュー(パラメータシート)が作成されます。
入力用 >> Gathered Facts のメニューに遷移して、たくさん作った項目もきちんと出来ているか確認。
ここではパラメータを何も登録しなくて良いです。
1.8 Ansible共通 >> 収集項目値管理
収集項目値管理では、収集項目(FROM)であるYAMLファイル名・変数名と、パラメータシート(TO)であるメニュグループ名・メニュー名・項目名を紐付けます。
入力する箇所はこちら。
収集項目(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 |
また、今回のようにパラメータの登録件数が多い時は、エクセルによる一括登録がおすすめです。
エクセルをダウンロードからセルに登録したい内容を記載、アップロードすることでまとめて登録できます。
1.9 Ansible-Legacy >> 作業実行
登録したMovementとオペレーションを選択します。これですべての情報の紐付け完了です。
それでは実行ボタンを押してみます。
ちなみに…
Ansible-Legacy >> 作業管理 からも収集結果が確認できます。
「収集状況」という項目があるので、成功していればステータスが「収集済み」、失敗していれば「対象外」と表示されます。
1.10 入力用(参照用でもOK) >> Gathered Facts
値が収集されているか確認します。
「フィルタ」を押して一覧を表示し、該当パラメータを確認。
空だったパラメータがうまく収集できていれば成功です!
画像では割愛していますが、すべてのパラメータに値が入っているはずです。
2. 【収集機能】ファイル取得:ターゲットホストからSSL証明書を取得する
ファイル取得も、流れとしてはパラメータ取得と同じで下図のようになります。
今回は事前にターゲットホストの/etc/pki/tls/certs配下にtest.crtを置いておいたので、それを取得してきます。
ファイルを取得すること自体の検証なのでファイルの中身は適当な文字列でもなんでも良いです。
2.1 基本コンソール >> 機器一覧
今回は1.1と同じターゲットホストになるので、このままでOKです。
2.2 基本コンソール >> オペレーション一覧
今回のオペレーションを登録します。
オペレーション名(任意の名称) | 実施予定日時(任意の時間)(※) |
---|---|
getSSL1 | 現在時刻を入力 |
※ 実施予定時間は情報として入力できるようになっているもので、タイマーではありません。
2.3 Ansible-Legacy >> Movement一覧
Movementを登録します。
この後Playbookに紐付けることで、SSL証明書を取得してくるジョブとなります。
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を格納しておいて下さい。
- 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証明書は、以下のディレクトリに格納されます。
Playbookが用意できたら、以下を登録します。
Playbook素材名(任意の名称) | Playbook素材 |
---|---|
getSSL | getSSL.yml |
2.5 Ansible-Legacy >> Movement-Playbook紐付
登録したMovementとPlaybookを紐付けます。
Movement(プルダウンから選択) | Playbook素材(プルダウンから選択) | インクルード順序 |
---|---|---|
getSSL | getSSL | 1 |
2.6 Ansible-Legacy >> 代入値自動登録設定
次に、Playbook内の変数(VAR_ssl_name)に具体値(test.crt)を代入します。
直接値を打ち込む方法とパラメータシートの値を代入する方法の2パターンあるようですが、今回は後者にします。
メニュー作成 >> メニュー定義・作成
以下を入力してメニューを作成(メニュー作成の詳細は1.7や2.7を参照ください)。
※デフォルトのままで良い値は割愛しています。
①基本情報は以下の4か所を入力。
パラメータシート名(任意の名称) | パラメータシート名(REST) | 作成対象(プルダウンから選択) | 表示順序 |
---|---|---|---|
SSL証明書名 | ssl_certificate_name | パラメータシート(ホスト/オペレーションあり) | 4 |
②対象メニューグループは作成したメニューが所属するメニューグループを指定するものですが、今回はデフォルト値にしておきます。
入力用 | 代入値自動登録用 | 参照用 |
---|---|---|
入力用 | 代入値自動登録用 | 参照用 |
③項目は2つ作り、それぞれ以下の4か所を入力します。
項目名(任意の名称) | 項目名(REST) | 入力方式(プルダウンから選択) | 最大バイト数(任意の値) |
---|---|---|---|
ファイル名 | file_name | 文字列(単一行) | 128 |
入力用 >> SSL証明書名
作成したメニューへ。これがパラメータシートとなります。
ホスト名とオペレーションを選択し、ファイル名にtest.crtと入力。
ホスト名(プルダウンから選択) | オペレーション | パラメータ > ファイル名 |
---|---|---|
targethost | getSSL1 | test.crt |
さて、仕込ができたら、Ansible-Legacy >> 代入値自動登録設定 に行き、パラメータシートの項目名とPlaybookの変数、Movementを紐づけます。
メニューグループ:メニュー項目 | 登録方式 | Movement名 | Movement名:変数名 |
---|---|---|---|
代入値自動登録用:SSL証明書名:パラメータ/ファイル名 | Value型 | getSSL | VAR_ssl_name |
これで、VAR_ssl_nameとtest.crtがつながりました。
2.7 メニュー作成 >> メニュー定義・作成
それでは、1のシナリオ同様、収集した値の受け皿となるパラメータシートを作っていきます。
「入力用」「代入値自動登録用」「参照用」メニューグループの中に「SSL証明書」メニューを作成します。このメニューからSSL証明書がダウンロードできるようになります。
①基本情報は以下の4か所を入力。
パラメータシート名(任意の名称) | パラメータシート名(REST) | 作成対象(プルダウンから選択) | 表示順序 |
---|---|---|---|
SSL証明書 | ssl_certificate | パラメータシート(ホスト/オペレーションあり) | 2 |
②対象メニューグループは作成したメニューが所属するメニューグループを指定するものですが、今回はデフォルト値にしておきます。
入力用 | 代入値自動登録用 | 参照用 |
---|---|---|
入力用 | 代入値自動登録用 | 参照用 |
③項目は2つ作り、それぞれ4か所を入力します。
項目名(任意の名称) | 項目名(REST) | 入力方式(プルダウンから選択) | 最大バイト数(任意の値) |
---|---|---|---|
ファイル名 | file_name | 文字列(単一行) | 128 |
項目名(任意の名称) | 項目名(REST) | 入力方式(プルダウンから選択) | ファイル最大バイト数(任意の値) |
---|---|---|---|
ファイル | file | ファイルアップロード | 1000000 |
入力したら作成ボタンから作成します。
これで「入力用」メニューグループの中に「SSL証明書」メニュー(パラメータシート)が作成できました。
2.8 Ansible共通 >> 収集項目値管理
収集項目値管理では、収集項目(FROM)であるYAMLファイル名・変数名と、パラメータシート(TO)であるメニュグループ名・メニュー名・項目名を紐付けます。
収集項目(FROM)
パース形式(プルダウンから選択) | PREFIX(ファイル名) | 変数名 |
---|---|---|
YAML | getSSL | 下記の変数名を記載 |
パラメータシート(TO)
メニューグループ:メニュー(プルダウンから選択) | 項目(プルダウンから選択) |
---|---|
代入値自動登録用:5:SSL証明書 | 下記の項目を記載 |
今回は2個分変数名と項目を対応させ登録させていきます。
変数名 | 項目 |
---|---|
SSL_file_name | パラメータ/ファイル名 |
SSL_file | パラメータ/ファイル |
2.9 Ansible-Legacy >> 作業実行
登録したMovementとオペレーションを選択します。これですべての情報の紐付け完了です。
画像は割愛しますが、1.9 と同様に実行します。
2.10 入力用 >> SSL証明書
値が収集されているか確認します。
「フィルタ」を押して一覧を表示し、該当パラメータを確認。
パラメータに値が収集され、SSL証明書(test.crt)がダウンロードできれば成功です!
まとめ
今回はITAの「収集機能」を使ってみました。
作業対象のサーバから設定値やファイルを取得して、自動でパラメータシートに登録されることが確認できました。
次回は「比較機能」を使ってみます。
↓【後編】比較機能の記事
Exastro IT Automation の収集比較機能を使ってみた【後編】