#はじめに
Exastro Playbook Collectionとは
システム構築で利用されるOSやMiddleware用のAnsible Playbook集です。
実機からパラメータを収集するPlaybookが含まれており、構築後の設定確認時などに活用できます。(Exastro Suiteサイト)
情報の収集及び設定を行うためのロールパッケージ「Windows Server 2019」から以下の収集用ロールを実行します。
更に今回は、WindowsServerから収集したパラメータ値をITAのパラメータシートに登録するところまでやってみたいと思います。
- Windows Defender設定
- ローカルグループ
- IPv4の設定
#作業環境
作業環境は以下の通りです。
ITAを操作するためのクライアントPC
- Windows10
- Google Chrome
ITAホストサーバ
- Linux CentOS7.8
- Exastro IT Automation1.8.1
- Ansible 2.11.2
設定情報の収集を行う対象サーバ
- Windows Server2019
#今回紹介するシナリオ
今回実行する手順は以下の通りです。
- 準備作業
- 1. ロールパッケージのダウンロード
- 2. Playbookcollectionを使用するための準備
- 3. WinRMを有効にする
- 実行手順
- 1. ロールパッケージの登録
- 2. Movementの登録
- 3. Movementとロールパッケージの紐付け
- 4. ターゲットマシンの登録
- 5. オペレーションの登録
- 6. ターゲットマシンとMovementの紐付け
- 7. 収集データ出力先変更
- 8. 収集した値を登録するパラメータシートを作成
- 9. 収集項目管理の登録
- 10. 作業実行
- 11. 実行結果確認
#準備作業
##1. ロールパッケージのダウンロード
Exastro Playbook Collectionサイトからロールパッケージをダウンロードします。
本記事では、以下のロールパッケージを使用していきます。
##2. Playbookcollectionを使用するための準備
本手順はITAで設定収集を行う場合に一度だけ実行する必要があります。
① ITAホストサーバにsudo権限を付与したユーザでログインする
② 必要なツールをインストールする
sudo yum -y install git wget
③Playbook実行フォルダを作成しフォルダを移動する
mkdir ansible_work
cd ansible_work/
④ パラメータ生成共通部品ロールリストをダウンロードし、手順③で作成したフォルダに配置する
wget https://exastro-suite.github.io/playbook-collection-docs/requirements/prerequire_list.yml
⑤ ansible-galaxyコマンドでロールをダウンロードする
ansible-galaxy install -r prerequire_list.yml -p roles
⑥ 以下を参考にPlaybookとインベントリを作成する
Playbookの作成
---
- hosts: local
become: yes
roles:
- setup_paragen
インベントリの作成
※AnsibleをPython2で動作させる場合、ansible_python_interpreterの定義は不要です。
[local]
localhost
[local:vars]
ansible_python_interpreter=/usr/bin/python3
ansible_become_pass=<sudoパスワード>
⑦ Playbookを実行してパラメータ生成用共通部品をインストールする
ansible-playbook -c local -i inventory prerequire.yml
本作業の詳細については、以下の記事でより詳細に解説されています。
##3. WinRMを有効にする##
AnsibleをWindows Serverに接続するために、WinRMを有効にします。
① Powershellを管理者権限で起動する
作業対象サーバに入り、PowerShellを管理者権限で起動します。
② Powershellのバージョンを確認する
PS > $PSVersionTable
Name Value
---- -----
PSVersion 5.1.17763.1007
※3.0以上のバージョンが必須です。
③ WinRMを設定する
確認事項は3点です。
PS > Enable-PSRemoting -Force
1 NetworkCategoryがprivateになっている
PS > Set-NetConnectionProfile -NetworkCategory Private
PS > Get-NetConnectionProfile
NetworkCategory : Private
2 Basic=trueになっている
PS > winrm set winrm/config/service/auth '@{Basic="true"}'
PS > winrm get winrm/config/service/auth
Basic = true
3 AllowUnencrypted=trueになっている
PS > winrm set winrm/config/service '@{AllowUnencrypted="true"}'
PS > winrm get winrm/config/service
AllowUnencrypted = true
本作業の詳細については、以下の記事でより詳細に解説されています。
#実行手順に入る前に
ITAにロールを登録する前に、今回収集するロールを確認していきましょう。
####WindowsDefender設定
本ロールはWindows Server 2019に関するWindowsDefender設定についての情報の取得を行います。
Windows Defenderをインストールしていない場合は、本ロール実行時にエラーとなるため実行しないでください。
生成したパラメータの出力例
構成は以下の通りです。
- playbook/
└── _parameters/
└── 管理対象マシンホスト名 or IPアドレス/
└── OS/ # OS設定ロール向け専用のフォルダ
WIN_Defender.yml # パラメータ
パラメータとして出力される情報は以下となります。
VAR_WIN_Defender:
DisableEnhancedNotifications: 0
DisableRealtimeMonitoring: false
EnableControlledFolderAccess: 0
FilesBlockedNotificationDisabled: 0
FireWallDomainProfileNotice: 1
FireWallPublicProfileNotice: 1
FireWallStandardProfileNotice: 1
MAPSReporting: 2
NoActionNotificationDisabled: 0
SmartScreenEnabled: 'Off'
SubmitSamplesConsent: 1
SummaryNotificationDisabled: 0
詳細については、以下の記事でより詳細に解説されています。
[Windows Defender設定 詳細] (https://github.com/exastro-playbook-collection/OS-Windows2019/blob/master/WIN_Defender/OS_gathering/README.md)
####ローカルグループ
本ロールは、Windows Server 2019に関するローカルグループについての情報の取得を行います。
生成したパラメータの出力例
構成は以下の通りです。
- playbook/
└── _parameters/
└── 管理対象マシンホスト名 or IPアドレス/
└── OS/ # OS設定ロール向け専用のフォルダ
WIN_Group.yml # パラメータ
パラメータとして出力される情報は以下となります。
VAR_WIN_Group:
- Action: present
Domain: TESTDOMAIN
Name: Access Control Assistance Operators
- Action: present
Domain: TESTDOMAIN
Name: Administrators
user:
- Administrator
- ansible
・・・<以下省略>
詳細については、以下の記事でより詳細に解説されています。
[ローカルグループ 詳細] (https://github.com/exastro-playbook-collection/OS-Windows2019/tree/master/WIN_Group/OS_gathering)
####IPv4の設定
本ロールは、Windows Server 2019に関するIPv4の設定についての情報の取得を行います。
生成したパラメータの出力例
構成は以下の通りです。
- playbook/
└── _parameters/
└── 管理対象マシンホスト名 or IPアドレス/
└── OS/ # OS設定ロール向け専用のフォルダ
WIN_NetIPv4Protocol.yml # パラメータ
パラメータとして出力される情報は以下となります。
VAR_WIN_NetIPv4Protocol:
AddressMaskReply: 0
DefaultHopLimit: 128
DhcpMediaSense: 1
GroupForwardedFragments: 0
IGMPLevel: 2
IGMPVersion: 4
IcmpRedirects: 1
MediaSenseEventLog: 0
MinimumMtu: 576
MulticastForwarding: 0
NeighborCacheLimit: 1024
RandomizeIdentifiers: 1
ReassemblyLimit: 33551232
RouteCacheLimit: 32768
SourceRoutingBehavior: 1
詳細については、以下の記事でより詳細に解説されています。
IPv4の設定
#実行手順
##1. ロールパッケージの登録
ITAの以下メニューからダウンロードしたzipファイルをITAに登録します。
メニュー: Ansible-LegacyRole >> ロールパッケージ管理
今回は以下のように登録します。
※ファイル選択→事前アップロードを押下し、登録する必要があります。
ロールパッケージ名 | ロールパッケージファイル(zip形式) |
---|---|
Windows2019 | OS-Windows2019.zip |
##2. Movementの登録
ITAの以下メニューからMovementを登録します。
メニュー: Ansible-LegacyRole >> Movement一覧
今回は以下のように登録します。
Movement名 | ホスト指定形式 | WinRM接続 |
---|---|---|
WindowsDefender設定 | IP | ● |
ローカルグループ | IP | ● |
IPv4の設定 | IP | ● |
##3. Movementとロールパッケージの紐付け
登録したMovementとロールパッケージを関連付けます。
メニュー: Ansible-LegacyRole >> Movement-Role紐付
今回は以下のように登録します。
Movement | ロールパッケージ名 | ロール名 | インクルード順序 |
---|---|---|---|
WindowsDefender設定 | OS-Windows2019 | WIN_Defender/OS_gathering | 1 |
ローカルグループ | OS-Windows2019 | WIN_Group/OS_gathering | 1 |
IPv4の設定 | OS-Windows2019 | WIN_NetIPv4Protocol/OS_gathering | 1 |
##4. ターゲットマシンの登録
ITAの以下のメニューからターゲットとなる機器を登録します。
メニュー: 基本コンソール >> 機器一覧
今回は以下のように登録します。
HW機器種別 | ホスト名 | IPアドレス | ログインユーザID | ログインパスワード管理 | ログインパスワード | Legacy/Role利用情報認証方式 |
---|---|---|---|---|---|---|
SV | WindowsServer | (ターゲットマシンのIPアドレス) | (接続ユーザID) | ● | (任意のパスワード) | パスワード認証(winrm) |
##5. オペレーションの登録
ITAの以下メニューからオペレーション(作業名)を登録します。
メニュー: 基本コンソール >> オペレーション一覧
今回は以下のように登録します。
オペレーション名 | 実施予定日時 |
---|---|
設定収集 | (任意の日時) |
##6. ターゲットマシンとMovementの紐付け
ITAの以下のメニューから登録したターゲットマシンとオペレーションを関連付けます。
メニュー: Ansible-LegacyRole >> 作業対象ホスト
今回は以下のように登録します。
オペレーション | Movement | ホスト |
---|---|---|
設定収集 | WindowsDefender設定 | WindowsServer |
設定収集 | ローカルグループ | WindowsServer |
設定収集 | IPv4の設定 | WindowsServer |
##7. 収集データ出力先変更
収集した情報を格納するためにVAR_OS_gathering_dest
を、生成したパラメータシートを出力するためにVAR_OS_extracting_dest
を指定します。
ITAの以下メニューから収集データ出力先フォルダの変更を行います。
メニュー: Ansible-LegacyRole >> 代入値管理
今回は以下のように登録します。
オペレーション | Movement | ホスト | 変数名 | 具体値 |
---|---|---|---|---|
設定収集 | WindowsDefender設定 | WindowsServer | VAR_OS_gathering_dest | "{{ __parameters_file_dir__ }}" |
設定収集 | WindowsDefender設定 | WindowsServer | VAR_OS_extracting_dest | "{{ __parameter_dir__ }}" |
設定収集 | ローカルグループ | WindowsServer | VAR_OS_gathering_dest | "{{ __parameters_file_dir__ }}" |
設定収集 | ローカルグループ | WindowsServer | VAR_OS_extracting_dest | "{{ __parameter_dir__ }}" |
設定収集 | IPv4の設定 | WindowsServer | VAR_OS_gathering_dest | "{{ __parameters_file_dir__ }}" |
設定収集 | IPv4の設定 | WindowsServer | VAR_OS_extracting_dest | "{{ __parameter_dir__ }}" |
##8. 収集した値を登録するパラメータシートを作成する
ITAの以下のメニューからパラメータシートを作成します。
メニュー: メニュー作成 >> メニュー定義・作成
登録数が多いため、本記事では簡素な説明で留めさせていただきます。
詳細な解説をご覧になりたい方は、以下の記事を参照ください。
【参考】
Exastro IT Automation ver1.5.0のキホンの"キ"
Exastro IT Automationの3つのAnsibleモードを使ってみた
以下の操作を繰り返し、今回は3つのメニューを作成します。
① メニュー作成情報を入力する
② 対象メニューグループを設定する
③ 項目の名前やデータ型を設定する
④ 「作成」を押下する
####WindowsDefenderメニュー作成
今回は以下のように登録します。
メニュー作成情報
メニュー名 | 作業対象 | 表示順序 |
---|---|---|
WindowsDefender設定 | パラメータシート(ホスト/オペレーションあり) | 1 |
対象メニューグループ | ||
デフォルトのまま作成します。 |
項目名 | 入力方式 | 最大バイト数 |
---|---|---|
DisableEnhancedNotifications | 文字列(単一行) | 128 |
FireWallDomainProfileNotice | 文字列(単一行) | 128 |
FireWallPublicProfileNotice | 文字列(単一行) | 128 |
FireWallStandardProfileNotice | 文字列(単一行) | 128 |
MAPSReporting | 文字列(単一行) | 128 |
####ローカルグループメニュー作成
今回は以下のように登録します。
メニュー名 | 作業対象 | 表示順序 |
---|---|---|
ローカルグループ | パラメータシート(ホスト/オペレーションあり) | 2 |
縦メニュー利用にチェックを入れます。 |
縦メニューとは
以下を参照ください。
[Exastro-ITA_利用手順マニュアル_メニュー作成機能]
(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_%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E4%BD%9C%E6%88%90%E6%A9%9F%E8%83%BD.pdf)
項目設定
項目名 | 入力方式 | 最大バイト数 |
---|---|---|
Name | 文字列(単一行) | 128 |
REPEATに20を指定します。 |
リピートとは
縦メニューを利用する場合、項目設定でリピート機能を利用します。
設定したリピート回数に応じて、枠の中の項目が追加されます。
####IPv4の設定メニュー作成
今回は以下のように登録します。
メニュー名 | 作業対象 | 表示順序 |
---|---|---|
IPv4の設定 | パラメータシート(ホスト/オペレーションあり) | 3 |
項目名 | 入力方式 | 最大バイト数 |
---|---|---|
AddressMaskReply | 文字列(単一行) | 128 |
DefaultHopLimit | 文字列(単一行) | 128 |
DhcpMediaSense | 文字列(単一行) | 128 |
GroupForwardedFragments | 文字列(単一行) | 128 |
IGMPLevel | 文字列(単一行) | 128 |
##9. 収集項目管理の登録
ITAの以下のメニューから収集項目値を管理します。
各項目変数と項目を関連付けます。
登録数が多いため、本記事では簡素な説明で留めさせていただきます。
メニュー: Ansible共通 >> 収集項目値管理
####WindowsDefenderの設定
今回は以下のように5件収集します。
バース形式 | PREFIX(ファイル名) | 変数名 | メンバ変数 | メニューグループ:メニュー | 項目 |
---|---|---|---|---|---|
YAML | WIN_Defender | VAR_WIN_Defender | 辞書key | WindowsDefender設定 | パラメータ/辞書key |
メンバ変数にはこちらを指定してください。
辞書key一覧 |
---|
DisableEnhancedNotifications |
FireWallDomainProfileNotice |
FireWallPublicProfileNotice |
FireWallStandardProfileNotice |
MAPSReporting |
変数の書き方については、こちらのドキュメントを参照ください。
Exastro-ITA_利用手順マニュアル
####ローカルグループ
今回は、Nameの収集を行います。
バース形式 | PREFIX(ファイル名) | 変数名 | メンバ変数 | メニューグループ:メニュー | 項目 |
---|---|---|---|---|---|
YAML | WIN_Group | VAR_WIN_Group | [x].Name | ローカルグループ | パラメータ/Name[x] |
作成したリピート数だけ収集できますので、上記に添って0~19の間でXの値を変えながら20件の登録を行います。
####IPv4の設定
今回は以下のように5件収集します。
バース形式 | PREFIX(ファイル名) | 変数名 | メンバ変数 | メニューグループ:メニュー | 項目 |
---|---|---|---|---|---|
YAML | WIN_NetIPv4Protocol | VAR_WIN_NetIPv4Protocol | 辞書key | WindowsDefender設定 | パラメータ/辞書key |
辞書key一覧 |
---|
AddressMaskReply |
DefaultHopLimit |
DhcpMediaSense |
GroupForwardedFragments |
IGMPLevel |
##10. 作業実行
ITAの以下のメニューから実行を行います。
メニュー: Ansible-LegacyRole >> 作業実行
それぞれのMovementとオペレーションを選択し実行します。
メニュー: Ansible-LegacyRole >> 作業管理
実行が完了しましたら、それぞれ収集済みになっていることを確認します。
収集ログで結果を確認することもできます。
##11. 実行結果確認
作成したメニューに値が入っているかどうか確認します。
メニュー: 入力用 >> WindowsDefender設定
メニュー: 代入値自動登録用 >> WindowsDefender設定
入力用では縦に、代入値自動登録用では横に一覧が表示されており収集が完了しました。
#おわりに
今回のシナリオではPlaybookcollectionとITAを利用して、設定情報を収集しました。
Yamlファイルと、ITAの収集機能を連携して、Windowsサーバの設定内容をパラメータシートに自動で登録してくれるので作業の効率化やミス防止に繋がる機能であると感じました。
Windows Server2019用だけでも数多くのロールが提供されています。設定時に必要となるロールを適宜選択して利用することで、様々な用途で活躍することができるのではないでしょうか。
#参考にしたリンク
- [Exastro-Suite公式サイト]
(https://exastro-suite.github.io/it-automation-docs/index_ja.html) - [Exastro IT Automation 収集/比較機能]
(https://exastro-suite.github.io/it-automation-docs/asset/Learn_ja/ITA-collect-compare_practice_ja.pdf) - [Exastro Playbook Collection]
(https://github.com/exastro-suite/playbook-collection-docs/blob/master/README.ja.md) - Exastro IT AutomationでWindows Serverの自動設定をやってみた
- Exastro IT Automation ver1.5.0のキホンの"キ"
- Exastro IT Automationの3つのAnsibleモードを使ってみた
- [Exastro IT AutomationでWindowsServerの設定情報を収集してみた]
(https://qiita.com/dai-kagino/items/dabbd21bb2befbfb2416)