Exastro IT AutomationでWindowsServerの設定情報を収集してみた

# はじめに

[Exastro Playbook Collectionサイト](https://github.com/exastro-suite/playbook-collection-docs/blob/master/README.ja.md)はOSやMWの環境構築や設定収集の機能を持つAnsible Roleを公開しているサイトです。

最近このサイトで同じExastro Suiteの[Exastro IT Automation](https://exastro-suite.github.io/it-automation-docs/index_ja.html)（以降、ITAと表記）で簡単に使えるようロールパッケージ形式にしたOS（Windows、Linux）の構築・収集用Ansible Roleの配布を開始したようですので利用してみたいと思います。

ITAは「システム設定を一元管理」「複数の自動化ソフトウェアを連携実行」する機能を持っているようですが、今回はAnsible Role実行機能を利用してOS設定情報の収集を行ってみます。

# 使用機器

本記事では事前に作成しておいた以下のような環境で作業を行います。

* WebブラウザでITAを操作するためのクライアントPC
* ITAホストサーバ（CentOS 8.3＋ITA 1.8.0）
  * [Exastro IT Automation マニュアル](https://exastro-suite.github.io/it-automation-docs/asset/Learn_ja/ITA-online-install_ja.pdf)を参考ITAのインストールを行っておきます
* 設定情報の収集を行う対象のサーバ（Windows Server 2019）
  * [Ansible公式ドキュメント](https://docs.ansible.com/ansible/2.9_ja/user_guide/windows_setup.html)を参考にWinRMの設定を行っておきます

# 作業手順

## 1. Playbook Collectionを使用するための準備作業

ITAホストサーバにsudo可能なユーザでログインし、[Exastro Playbook Collectionサイト](https://github.com/exastro-suite/playbook-collection-docs/blob/master/README.ja.md)の『**準備作業**』の手順を参考に準備作業を行います。

## 2. ジョブ作成

本章の手順はクライアントPC上のブラウザでITAホストサーバに接続して行います。

### 2.1. ロールパッケージのダウンロード

[Exastro Playbook Collectionサイト](https://github.com/exastro-suite/playbook-collection-docs/blob/master/README.ja.md)から利用するロールパッケージをダウンロードします。
本記事では例として以下のロールパッケージを使用します。

| 対象製品 | Version | 機能 | 備考 |
| :-: | :-: | :-: | :-: |
| OS | WS2019 | 環境構築 & 設定収集 | 本記事では設定収集用機能のみ使用します。 |

### 2.2. ロールパッケージの登録

ITAの以下メニューからダウンロードしたロールパッケージを登録します。

* [メインメニュー] - [Ansible-LegacyRole] - [ロールパッケージ管理] - [登録] - [登録開始]

ここでは以下の値を指定し『登録』ボタンを押して登録を実行します。

:::note info
『ロールパッケージファイル(ZIP形式)』に指定するファイルは『ファイルを選択』ボタンを押下してダウンロードしたロールパッケージを選択した後、『事前アップロード』ボタンを押下してアップロードします。
:::

| パラメータ | 設定値 |
| :-: | :-: |
| ロールパッケージ名 | OS-Windows2019 |
| ロールパッケージファイル(ZIP形式) | OS-Windows2019.zip |

### 2.3. Movementの作成

ITAの以下メニューからMovementを登録します。

* [メインメニュー] - [Ansible-LegacyRole] - [Movement一覧] - [登録] - [登録開始]

ここでは以下の値を指定し『登録』ボタンを押して登録を実行します。

| パラメータ | 設定値 |
| :-: | :-: |
| Movement名 | Windows2019設定収集 |
| ホスト指定形式 | IP |
| WinRM接続 | ● |
| ヘッダーセクション | - hosts: all<br>&nbsp;&nbsp;remote_user: "{{ \_\_loginuser\_\_ }}"<br>&nbsp;&nbsp;gather_facts: yes<br> |

### 2.4. Movementとロールパッケージの紐付け

ITAの以下メニューからロールパッケージとMovementの紐付けを行います。

* [メインメニュー] - [Ansible-LegacyRole] - [Movement-ロール紐付] - [登録] - [登録開始]

ここでは以下の値を指定し『登録』ボタンを押して登録を実行します。

| パラメータ | 設定値 |
| :-: | :-: |
| Movement | Windows2019設定収集 |
| ロールパッケージ名 | OS-Windows2019 |
| ロール名 | OS-Windows2019/WIN_ALL/OS_gathering |
| インクルード順序 | 1 |

## 3. 作業名登録

本章の手順はクライアントPC上のブラウザでITAホストサーバに接続して行います。

### 3.1. ターゲットマシン登録

ITAの以下メニューからターゲットマシンの登録を行います。

* [メインメニュー] - [基本コンソール] - [機器一覧] - [登録] - [登録開始]

ここでは以下の値を指定し『登録』ボタンを押して登録を実行します。

| パラメータ | 設定値 |
| :-: | :-: |
| HW機器種別 | SV |
| ホスト名 | Windows2019_01 |
| IPアドレス | ＜ターゲットマシンのIPアドレス＞ |
| ログインユーザID | ＜接続ユーザID＞ |
| ログインパスワード<br>管理 | ● |
| ログインパスワード<br>ログインパスワード | ＜パスワード＞ |
| Ansible利用情報<br>認証方式 | パスワード認証(winrm) |
| Ansible利用情報<br>ポート番号 | 5986 |
| Ansible利用情報<br>追加オプション | ansible_winrm_server_cert_validation: ignore |

### 3.2. オペレーション登録

ITAの以下メニューからオペレーションの登録を行います。

* [メインメニュー] - [基本コンソール] - [オペレーション一覧] - [登録] - [登録開始]

ここでは以下の値を指定し『登録』ボタンを押して登録を実行します。

| パラメータ | 設定値 |
| :-: | :-: |
| オペレーション名 | Windows2019 |
| 実施予定日時 | 2000/01/01 |

:::note info
『実施予定日時』は本記事では任意の日時を指定します。
:::

### 3.3. ターゲットマシンとMovementの紐付け

ITAの以下メニューからターゲットマシンとMovementの紐付けを行います。

* [メインメニュー] - [Ansible-LegacyRole] - [作業対象ホスト] - [登録] - [登録開始]

ここでは以下の値を指定し『登録』ボタンを押して登録を実行します。

| パラメータ | 設定値 |
| :-: | :-: |
| オペレーション名 | Windows2019 |
| Movement名 | Windows2019設定収集 |
| ホスト名 | Windows2019_01 |

### 4. ジョブ実行

本章の手順はクライアントPC上のブラウザでITAホストサーバに接続して行います。

### 4.1. 収集データ出力先フォルダ変更

ITAの以下メニューから収集データ出力先フォルダの変更を行います。

* [メインメニュー] - [Ansible-LegacyRole] - [代入値管理] - [登録] - [登録開始]

ここでは以下の値を指定し『登録』ボタンを押して登録を実行します。

| パラメータ | 設定値 |
| :-: | :-: |
| オペレーション | Windows2019 |
| Movement | Windows2019設定収集 |
| ホスト | Windows2019_01 |
| 変数名 | VAR_OS_extracting_dest_all |
| 具体値 | ```"{{ __parameter_dir__ }}" ``` |

:::note info
通常、収集したデータはITA内部のPlaybook実行フォルダ配下に出力されブラウザからダウンロードできないため、出力先をITAの結果データ格納フォルダ（ResultData_xxxxxxxxxx.zipとして圧縮され、ダウンロード可能なフォルダ）配下に変更します。
:::

### 4.2. ジョブ実行

ITAの以下メニューからOperation、Movementを指定してジョブ実行を行います。

* [メインメニュー] - [Ansible-LegacyRole] - [作業実行]

ここでは以下の値を指定し『実行』ボタンを押してジョブを実行します。

| パラメータ | 設定値 |
| :-: | :-: |
| Movement | Windows2019設定収集 |
| オペレーション | Windows2019 |

### 5. 結果確認

本章の手順はクライアントPC上のブラウザでITAホストサーバに接続して行います。

### 5.1. 結果データダウンロード

ジョブ実行後、[作業状態確認]画面からResultData_xxxxxxxxxx.zipをダウンロードして展開すると、解凍先の_patametersフォルダ配下に収集したデータ（YMLファイル形式）が格納されています。

```
ResultData_xxxxxxxxxx.zip
    +---_parameters/
        +---Windows2019_01/
            +---OS/
                +---WIN_AutoShareServer.yml
                +---WIN_ComponentService.yml
                +---WIN_ComputerSetting.yml
                +---WIN_DataCollectorSet.yml
                +---WIN_Defender.yml
                +---WIN_DeviceInstallSetting.yml
                +---WIN_DeviceManager.yml
                +---WIN_EnvSetting.yml
                +---WIN_ErrorReporting.yml
                +---WIN_EventLog.yml
                +---WIN_Group.yml
                +---WIN_Hosts.yml
                +---WIN_HotFix.yml
                +---WIN_InstallPP.yml
                +---WIN_NetAdapterAdvancedProperty.yml
                +---WIN_NetAdapterBinding.yml
                +---WIN_NetAdapterConfiguration.yml
                +---WIN_NetFirewallProfile.yml
                +---WIN_NetFirewallRule_Inbound.yml
                +---WIN_NetFirewallRule_Outbound.yml
                +---WIN_NetIpAddress.yml
                +---WIN_NetIPv4Protocol.yml
                +---WIN_NetIPv6Protocol.yml
                +---WIN_NetOffloadGlobalSetting.yml
                +---WIN_NetworkDrive.yml
                +---WIN_NetworkManagement.yml
                +---WIN_NICTeaming_Team.yml
                +---WIN_NICTeaming_VLAN.yml
                +---WIN_NtpClientSetting.yml
                +---WIN_OSRecoveryConfiguration.yml
                +---WIN_PagefileSetting.yml
                +---WIN_PartitionSetting.yml
                +---WIN_PrinterInfo.yml
                +---WIN_PrivateSetting.yml
                +---WIN_ProcessorScheduling.yml
                +---WIN_RemoteDesktop.yml
                +---WIN_Services.yml
                +---WIN_SharedFolder.yml
                +---WIN_SNMPService.yml
                +---WIN_StartUp.yml
                +---WIN_UserAccount.yml
                +---WIN_VolumeSetting.yml
                +---WIN_WindowsFeature.yml
```

以下、一例です。

``` WIN_ComputerSetting.yml
---
VAR_WIN_ComputerSetting:
  Description: ''
  Name: Windows2019_01
  DNSDomainSuffixSearchOrder: null
  SyncDomainWithMembership: 1
  DomainOrWorkgroup: false
  DomainOrWorkgroupName: WORKGROUP
  DomainUser: ''
  DomainPassword: ''
```

| メンバー変数 | 意味 |
| :--: | :--: |
| Name | フルコンピュータ名 |
| Description | コンピュータの説明 |
| ： | ： |

### 6. おわりに

今回はExastro Playbook Collectionのロールパッケージを使ってみました。
本記事のように単機能で利用するのであればAnsible Playbookをそのまま実行した方が簡単ですが、他の機能と組み合わせたり設定情報を構成管理したりと、ITAは様々な機能を持っているようですのでうまく組み合わせて便利に使えるのではないかと思います。

以前にITAへロールの組込みを行った際には独自設定ファイルの作成など敷居の高さを感じていましたが、かなり利用が簡単になった気がします。
色々試してみたいと思っています。

### 7. 参考にした情報

* 公式サイト
  * [Exastro-Suite公式サイト](https://exastro-suite.github.io/docs/index_ja.html)
  * [Exastro Playbook Collection](https://github.com/exastro-suite/playbook-collection-docs/blob/master/README.ja.md)
* ドキュメント類
  * [Exastro IT Automation クイックスタートガイド](https://exastro-suite.github.io/it-automation-docs/asset/Learn_ja/ITA-quickstart_ja.pdf)
  * [Exastro IT Automation 利用手順マニュアル Ansible-driver](https://exastro-suite.github.io/it-automation-docs/asset/Documents_ja/Exastro-ITA_%E5%88%A9%E7%94%A8%E6%89%8B%E9%A0%86%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB_Ansible-driver.pdf)
  * [Exastro IT Automation 利用手順マニュアル Ansible-driver 収集機能編](https://exastro-suite.github.io/it-automation-docs/asset/Documents_ja/Exastro-ITA_%E5%88%A9%E7%94%A8%E6%89%8B%E9%A0%86%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB_%E5%8F%8E%E9%9B%86%E6%A9%9F%E8%83%BD.pdf)
* 関連Qiita記事
  * [Exastro IT Automationインストール(v1.5.0)](https://qiita.com/standsetx/items/c0e4ed7c6a2c34b2f068)
  * [Exastro IT Automationを実際に動かしてみた(クイックスタート)](https://qiita.com/standsetx/items/7a96f2286b6d1f3a3524)
  * [Exastro IT Automation ver1.5.0のキホンの"キ"](https://qiita.com/wakky0328/items/cf29c22cbf7cb42d462b)
  * [Exastro IT Automationの３つのAnsibleモードを使ってみた](https://qiita.com/standsetx/items/6efb0a6bef28c60bc883)
  * [Exastro Playbook Collectionを使ってみた
](https://qiita.com/tak_paddy/items/3daa241f8b4b621ea32f)
  * [Exastro Playbook Collection 活用事例 (ITA readme)
](https://qiita.com/expr/items/47a84e2248fa1a85cdc3)