LoginSignup
1
0

More than 1 year has passed since last update.

Exastro Playbook Collectionを使ってみた (Windows環境構築編)

Last updated at Posted at 2021-10-15

はじめに

Playbook Collectionは、システム構築で利用されるOSやMiddleware用のAnsible Playbook集です。
OS向けの環境構築用Roleと設定収集用Roleがまとめられています。
対応OSは以下の4つになり、主要なところが提供されています。

・RHEL7
・RHEL8
・Windows2016
・Windows2019

本記事ではOS向けの設定を行うためのロールパッケージ「Windows Server 2019」から以下の環境構築用Roleを実行します。

・hosts設定
・環境変数
・ローカルユーザー

作業環境

作業環境は以下の通りです。

ITAを操作するためのクライアントPC

・Windows10
・Google Chrome

ITAホストサーバ

・Linux CentOS7.8
・Exastro IT Automation1.8.1
・Ansible 2.11.2

環境構築の設定を行う対象サーバ

・Windows Server2019

{6C2AC4A0-F087-4256-BAB9-46F1CFF62683}.png

今回紹介するシナリオ

本記事は以下のシナリオで進めていきます。

【準備編】
1. ロールパッケージのダウンロード
2. ITAホストサーバへの準備作業
3. WinRMの有効化
4. 今回使用するPlaybookの確認
5. ロールパッケージをアップロードしてジョブ(Movement)に紐付ける
6. 変数ネスト管理の更新
7. Conductorの作成
8. ターゲットマシンの登録
9. メニューグループの作成
10. データシートの作成
11. パラメータシートの作成
12. データシートへのレコード登録
13. 代入値自動登録設定の登録

【実行編】
1. オペレーションの登録
2. パラメータシートへ代入値登録
3. Conductorの実行
4. 実行結果の確認
5. おわりに

【準備編】

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

Github 上で公開されている、Playbook Collectionのロールパッケージをダウンロードします。
本記事では、Windows2019用のRole Packageをダウンロードします。
ダウンロードはGithub上で画像のリンクをクリックすることで可能です。

{5A0BC32A-5976-479F-B77F-8793247B6BA4}.png

2. ITAホストサーバへの準備作業

本手順はITAで設定・収集を行う際に一度だけ実行する必要があります
以降の手順は特に明記の無い限りITAホストサーバ上で実行します
本作業の詳細については、Exastro Playbook Collectionでより詳細に解説されています。

2-1 ITAホストサーバにsudo権限を付与したユーザでログインします

2-2 必要なツールをインストールします

sudo yum -y install git wget

2-3 Playbook実行フォルダを作成し、フォルダ下に移動します

mkdir ansible_work
cd ansible_work/

2-4 パラメータ生成共通部品のロールリストをダウンロードし、前作業で作成したフォルダに配置します

wget https://exastro-suite.github.io/playbook-collection-docs/requirements/prerequire_list.yml

2-5 ansible-galaxyコマンドでロールをダウンロードします

ansible-galaxy install -r prerequire_list.yml -p roles

2-6 以下を参考にPlaybookとインベントリを作成する

・Playbook(prerequire.yml)の作成

prerequire.yml
---
- 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パスワード>

2-7 Playbookを実行してパラメータ生成用共通部品をインストールします

ansible-playbook -c local -i inventory prerequire.yml

3. WinRMの有効化

AnsibleをWindows Serverに接続するために、WinRMを有効にします。

3-1 Powershellを管理者権限で起動します
作業対象サーバに入り、PowerShellを管理者権限で起動します。

3-2 Powershellのバージョンを確認します
※3.0以上のバージョンが必須です。

PS > $PSVersionTable
Name                           Value
----                           -----
PSVersion                      5.1.17763.1007

3-3 WinRMを設定します
確認事項は3点です。
本作業の詳細については、「Exastro IT AutomationでWindows Serverの自動設定をやってみた」でより詳細に解説されています。

PS > Enable-PSRemoting -Force

3-3-1 NetworkCategoryがprivateになっている

PS > Set-NetConnectionProfile -NetworkCategory Private
PS > Get-NetConnectionProfile

NetworkCategory  : Private

3-3-2 Basic=trueになっている

PS > winrm set winrm/config/service/auth '@{Basic="true"}'
PS > winrm get winrm/config/service/auth

Basic = true

3-3-3 AllowUnencrypted=trueになっている

PS > winrm set winrm/config/service '@{AllowUnencrypted="true"}'
PS > winrm get winrm/config/service

AllowUnencrypted = true

4. 今回使用するPlaybookの確認

hosts設定(WIN_Hosts/OS_build)
本ロールは、Windows Server 2019に関するhosts設定についての情報の設定を行います。

このRoleの特徴として、変数にファイルの内容を定義しています。
変数の内容に基づき、templateモジュールでファイルを配置しています。

まずは実行されているPlaybookを見てみましょう。
内容はテンプレートの配置になります。

build_Hosts_item.yml
---
- name:  "Write file. ({{ item.path }})"
  win_template:
    src: hosts.j2
    dest: "{{ item.path }}"

ではテンプレートを見てみます。
リスト 「item.text」の要素を順に展開するjinja2文が書かれています。

hosts.j2
{% for line in item.text %}
{{ line }}
{% endfor %}

最後に、セットのITAreadmeです。
VAR_WIN_Hosts[n].path にはhostsファイルの配置先を定義し、VAR_WIN_Hosts[n].text にはhostsファイルの内容を定義します。

ita_readme_OS-Windows2019%WIN_Hosts%OS_build.yml
VAR_WIN_Hosts:
  - path: C:/Windows/System32/drivers/etc/hosts
    text:
      - '# Copyright (c) 1993-2009 Microsoft Corp.'
      - '#'
      - '# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.'
      - '#'
      - '# This file contains the mappings of IP addresses to host names. Each'

環境変数(WIN_EnvSetting/OS_build)
本ロールは、Windows Server 2019に関する環境変数についての情報の設定を行います。

本Roleを使用して、ユーザ環境変数(User)とシステム環境変数(Machine)を設定することができます。
VAR_WIN_EnvSetting[n].Name には変数名を定義し、VAR_WIN_EnvSetting[n].Value には値を定義します。

VAR_WIN_EnvSetting[n].Actionをabsentとすることで環境変数の削除も可能です。

ita_readme_OS-Windows2019%WIN_EnvSetting%OS_build.yml
---
VAR_WIN_EnvSetting:
  Machine:
    - Action: present
      Name: TEST_PROGRAM
      Value: 'c:\TEST_PRPGRAM'
  User:
    - Action: present
      Name: Path
      Value: '%USERPROFILE%\AppData\Local\PF\PF_APP;'

ローカルユーザー(WIN_UserAccount/OS_build)
このRoleではユーザの作成や削除を行います。
Playbookではparameter以下のメンバー変数に基づきユーザを作成します。
VAR_WIN_UserAccount[n].Actionをabsentとすることでユーザの削除も可能です。

ita_readme_OS-Windows2019%WIN_UserAccount%OS_build.yml
VAR_WIN_UserAccount:
  - Action: present
    Description: Test User Create
    Disabled: false
    FullName: 'TestUser'
    Name: TestUser
    Password: 'Passw0rd123'
    PasswordApply: true
    PasswordChangeable: true
    PasswordExpires: false
    PasswordRequired: false

5. ロールパッケージをアップロードしてジョブ(Movement)に紐付ける

5-1 Movementを登録
Conductorは一つ以上のMovementから構成されるため、Movementを作成します。

メニューグループ「Ansible-LegacyRole」> 「Movement一覧」>「登録」を選択し、
以下内容を入力後に、「登録」を押下します。

今回は以下のように登録します。

Movement名 ホスト指定形式 WinRM接続
hosts設定 IP
環境変数 IP
ローカルユーザ IP

{0E2DC65D-203E-44DE-8D13-ED5D9F1FFAB7}.png

5-2 ロールパッケージのアップロード
ダウンロードしたロールパッケージ「OS-Windows2019.zip」をITAにアップロードします。

メニューグループ「Ansible-LegacyRole」> 「ロールパッケージ管理」>「登録」を選択し、「ファイルを選択」でダウンロードしたロールパッケージを開き、アップロード後に「登録」を押下します。

今回は以下のように登録します。

ロールパッケージ名 ロールパッケージファイル(zip形式)
Windows2019 OS-Windows2019.zip

{F7D316A4-062F-4215-9DE8-DBBEA04A90C8}.png

5-3 アップロードしたロールパッケージをMovementに紐付け
登録したMovementとロールパッケージを紐付けます。

メニューグループ「Ansible-LegacyRole」> 「Movement-ロール紐付」>「登録」を選択し、
以下内容を入力後に、「登録」を押下します。

今回は以下のように登録します。

Movement ロールパッケージ名 ロール名 インクルード順序
hosts設定 OS-Windows2019 WIN_Hosts/OS_build 1
環境変数 OS-Windows2019 WIN_EnvSetting/OS_build 1
ローカルユーザ OS-Windows2019 WIN_UserAccount/OS_build 1

{E3B6BEF4-B35B-45FC-9185-D9864AFA092E}.png

6. 変数ネスト管理の更新

登録したロールパッケージで定義されている多段変数内で繰返配列定義されているメンバー変数の配列の最大繰返数を更新します。
本記事ではユーザ環境変数を2つ、システム環境変数を3つ設定しようと思うので、
変数「VAR_WIN_EnvSetting」の最大繰返数を更新します。

6-1. メニューグループ「Ansible-LegacyRole」> 「変数ネスト管理」>
  表示フィルタ「フィルタ」を押下し、「一覧」から変数名「VAR_WIN_EnvSetting」の
  「更新」を押下後、「最大繰返数」を変更し「更新」を押下します。

変数名 メンバー変数名(繰返し有) 最大繰返数
VAR_WIN_EnvSetting User 2
変数名 メンバー変数名(繰返し有) 最大繰返数
VAR_WIN_EnvSetting Machine 3

image.png

image.png

image.png

7. Conductorの作成

Movementをまとめて実行するために作成したMovementを元に、Conductorを作成します。

7-1. メニューグループ「Conductor」> 「Conductorクラス編集」> 画像のように内容入力後に「登録」を押下します。

今回は以下のように登録します。

Conductor名 内容
OS初期設定 (画像を参照)

image.png

8. ターゲットマシンの登録

作業対象となるWindowsサーバをITAに登録します。

8-1.メニューグループ「基本コンソール」> 「機器一覧」>「登録」を選択し、
  以下内容を入力後に、「登録」を押下します。

今回は以下のように登録します。

HW機器種別 ホスト名 IPアドレス ログインユーザID ログインパスワード管理 ログインパスワード Legacy/Role利用情報認証方式
SV targetserver (作業対象マシンのIPアドレス) root ******** パスワード認証(winrm)

{292E4726-4F2D-4CBE-817F-41A658A4EFBE}.png

9. メニューグループの作成

データシートを格納するメニューグループを作成します。
ITAではデフォルトで作成したパラメータシートやデータシートを格納するメニューグループ「入力用」が存在しますが、本記事ではパラメータシートとデータシートの管理をわかりやすくするためデータシート用のメニューグループを作成しておきます。

9-1.メニューグループ「管理コンソール」> 「メニューグループ管理」>「登録」を選択し、
  以下内容を入力後に、「登録」を押下します。

今回は以下のように登録します。

メニューグループ名称 表示順序
データシート管理 1

image.png

10. データシートの作成

データシートを1件作成していきます。
データシートは、ITA上で情報を管理する場合に利用できます。
また、他のパラメータシートやデータシートのプルダウンで選択する項目の参照元として利用することで、文言の揺れなどを防ぐことが可能です。
詳細は利用手順マニュアル メニュー作成機能に記載されています。

10-1. メニューグループ「メニュー作成」> 「メニュー定義・作成」>
  画像のように内容入力後に「作成」を押下します。

メニュー名
アクション種別

image.png

image.png

image.png

11. パラメータシートの作成

hosts設定、環境変数の設定、ユーザ設定のパラメータシートを作成していきます。
環境変数の設定のパラメータシートはユーザ環境変数用とシステム環境変数用の2つのパラメータシートを作成しますので、計4つのパラメータシートを作成します。

11-1. メニューグループ「メニュー作成」> 「メニュー定義・作成」>
   画像のように内容入力後に「作成」を押下します。


■hosts設定

メニュー名
hosts設定

image.png

image.png


■環境変数の設定
環境変数の設定ではリピート機能と縦メニューを使用して
ユーザ環境変数を2つ、システム環境変数を3つ設定しようと思います。
リピート機能と縦メニューの説明については以下をご参照頂ければと思います。

リピート機能と縦メニュー
決まった組み合わせを複数定義する場合リピート機能を利用することができ、設定した値に応じた回数だけ項目が追加されます。
縦メニューとは、この機能を用いて作成したメニューを指します。

詳細は利用手順マニュアル メニュー作成機能を参考にしてください。

メニュー名
環境変数_user

image.png

image.png

image.png


メニュー名
環境変数_machine

image.png

image.png


■ローカルユーザ

メニュー名
ローカルユーザ

image.png

image.png

image.png


12. データシートへのレコード登録

プルダウン参照元となるデータシートへのレコード登録をします。

12-1. メニューグループ「データシート管理」> 「アクション種別」>「登録」を選択し、
   以下内容を入力後に、「登録」を押下します。

今回は以下のように登録します。

アクション種別
1件目 absent
2件目 present

image.png

image.png

13. 代入値自動登録設定の登録

パラメータシートのパラメータと、Role中の変数を紐づけます。
紐づけると、パラメータシートに入力すると変数への代入値が自動的に定義されるようになります。

13-1.メニューグループ「Ansible-LegacyRole」> 「代入値自動登録設定」>
  「登録」を選択し、以下内容を入力後に、「登録」を押下します。

image.png

image.png

■「hosts設定」の登録内容

共通の設定

メニューグループ:メニュー 登録方式 Movement 変数名
hosts設定 value型 hosts設定 VAR_WIN_Hosts
項目 メンバ変数名 代入順序
パラメータ/ファイルパス [0].path -
パラメータ/hostsファイルの内容 [0].text 1

■「ユーザ用の環境変数設定」の登録内容

共通の設定

メニューグループ:メニュー 登録方式 Movement 変数名
環境変数_user value型 環境変数 VAR_WIN_EnvSetting
項目 メンバ変数名 代入順序
パラメータ/アクション種別 User[0].Action -
パラメータ/変数名 User[0].Name -
パラメータ/設定値 User[0].Value -
パラメータ/アクション種別[2] User[1].Action -
パラメータ/変数名[2] User[1].Name -
パラメータ/アクション種別[2] User[1].Value -

■「システム用の環境変数設定」の登録内容

共通の設定

メニューグループ:メニュー 登録方式 Movement 変数名
環境変数_machine value型 環境変数 VAR_WIN_EnvSetting
項目 メンバ変数名 代入順序
パラメータ/アクション種別 Machine[0].Action -
パラメータ/変数名 Machine[0].Name -
パラメータ/設定値 Machine[0].Value -
パラメータ/アクション種別[2] Machine[1].Action -
パラメータ/変数名[2] Machine[1].Name -
パラメータ/設定値[2] Machine[1].Value -
パラメータ/アクション種別[3] Machine[2].Action -
パラメータ/変数名[3] Machine[2].Name -
パラメータ/設定値[3] Machine[2].Value -

■「ローカルユーザ」の登録内容

共通の設定

メニューグループ:メニュー 登録方式 Movement 変数名
ローカルユーザ value型 ローカルユーザ VAR_WIN_UserAccount
項目 メンバ変数名 代入順序
パラメータ/アクション種別 [0].Action -
パラメータ/ユーザ名 [0].Name -
パラメータ/フルネーム [0].FullName -
パラメータ/説明 [0].Description -
パラメータ/初回ログイン時のPW変更の要否 [0].PasswordRequired -
パラメータ/PW変更実施の権限 [0].PasswordChangeable -
パラメータ/PW無期限設定 [0].PasswordExpires -
パラメータ/アカウント無効化 [0].Disabled -
パラメータ/PW変更情報フラグ [0].PasswordApply -
パラメータ/パスワード [0].Password -

【実行編】

1. オペレーションの登録

オペレーション(作業名)を登録します。
※オペレーションとは、ITAにおける作業実行の単位になります。

1-1. メニューグループ「基本コンソール」> 「オペレーション一覧」>「登録」を選択し、
  以下内容を入力後に、「登録」を押下します。

今回は以下のように登録します。

オペレーション名 実施予定日時
OS初期設定 (任意の日時)

image.png

2. パラメータシートへ代入値登録

パラメータシートで、実際に代入値を登録していきます。

■hosts設定
メニューグループ「入力用」> 「hosts設定」>「登録」を選択し、
以下内容を入力後に、「登録」を押下します。

image.png

ホスト名 オペレーション ファイルパス
targetserver OS初期設定 C:\Windows\System32\drivers\etc\hosts
hostsファイルの内容
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
# localhost name resolution is handled within DNS itself.
#   127.0.0.1   localhost
#   ::1      localhost
    10.1.1.1   host01
    10.1.1.2   host02

■ユーザ用の環境変数設定
メニューグループ「入力用」> 「環境変数_user」>「登録」を選択し、
以下内容を入力後に、「登録」を押下します。

image.png

ホスト名 オペレーション 代入順序 アクション種別 変数名 設定値
targetserver OS初期設定 1 present Env_user1 test1
targetserver OS初期設定 2 present Env_user2 test2

■システム用の環境変数設定
メニューグループ「入力用」> 「環境変数_machine」>「登録」を選択し、
以下内容を入力後に、「登録」を押下します。

image.png

ホスト名 オペレーション 代入順序 アクション種別 変数名 設定値
targetserver OS初期設定 1 present Env_machine1 test1
targetserver OS初期設定 2 present Env_machine2 test2
targetserver OS初期設定 3 present Env_machine3 test3

■ローカルユーザ
メニューグループ「入力用」> 「ローカルユーザ」>「登録」を選択し、
以下内容を入力後に、「登録」を押下します。

image.png

ホスト名 オペレーション アクション種別 ユーザ名 フルネーム 説明
targetserver OS初期設定 present testuser testuser テスト用ユーザ
初回ログイン時のPW変更の要否 PW変更実施の権限 PW無期限設定 アカウント無効化
False True False False
PW変更情報フラグ パスワード
True (任意のパスワード)

3. Conductorの実行

Conductorを実行し、作成した各Monementを実行していきます。

3-1.メニューグループ「Conductor」> 「Conductor作業実行」> 以下内容を選択し、「実行」を押下します。

image.png

image.png

4. 実行結果の確認

Conductor実行後の作業画面を確認します。
ノード(Movement)をクリックすることでステータスや詳細結果を確認できます。

image.png

次にターゲットサーバであるWindows Serverにて設定後の確認を行います。

■hosts設定
指定したパス「C:\Windows\System32\drivers\etc」に配置しているhostsファイルを確認したところ、
ファイルの中身が変更されています。

image.png

■環境変数
ユーザー環境変数に2つの変数、システム環境変数に3つの変数が追加されていることが確認できます。

image.png

■ローカルユーザ
testuserが作成されていることが確認できます。
image.png


5. おわりに

今回はPlaybook CollectionとITAを利用して、ターゲットサーバへ環境構築設定を行いました。
1からPlaybookを作成する手間が省力化されているので、作業を大きく効率化できることを実感できました。
また本記事で使用したRoleはほんの一部で、他にも多様なRoleが公開されていているので
様々な用途でPlaybook Collectionを活用することができるのではないでしょうか。

関連リンク

Exastro-Suite公式サイト
Exastro Playbook Collection
Exastroの参考になる記事をまとめてみた
Exastro IT AutomationでWindows Serverの自動設定をやってみた
Exastro Playbook Collectionを使ってみた

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