1. はじめに
本記事はExastro IT Automation2(以下ITA)を用いてWindows Serverの設定を自動化する手順を記録した記事です。
ITAについて詳しく知りたい!って人はExastroコミュニティサイトへどうぞ。
2. 今回やること
今回はWindows Server2台を対象として、IIS(Microsoft Internet Information Services)をインストールして設定を投入するところまでやってみたいと思います。
では今回の流れです。
① 準備編:WinRMの設定と必要素材の用意
①-1 WinRMでWindows Serverに接続する
①-2 Playbookを用意する
①-3 htmlファイルを用意する
② 仕込編:ITAへの情報の登録
②-1 作業対象ホストを登録する
②-2 Movementを作成する
②-3 Playbookを登録する
②-4 htmlファイルを登録する
②-5 Movement-Playbook紐付を登録する
②-6 Conductorを作成する
②-7 メニューグループを作成する
②-8 メニューを作成する
②-9 代入値自動登録設定を行う
③ 実行編:ITAで作業の実行をし、IISをWindows Serverに投入
③-1 オペレーションを新規登録する
③-2 パラメータシートにデータを登録する
③-3 Conductorを実行する
③-4 Movementごとの詳細結果を確認する
③-5 実機で確認する
①準備編:WinRMの設定と必要素材の用意
①-1 WinRMでWindows Serverに接続する
Ansibleは対象ホストへSSHで接続します。
しかし、Windows ServerではSSH接続がデフォルトで使えないため、WinRM(Windows Remote Management)というものを使って接続します。
STEP1 PowerShell を管理者権限で起動する
対象サーバに入り、PowerShellを管理者権限で起動します。
STEP2 PowerShell のバージョンを確認する
PowerShellはバージョン3.0以上が必須だそうです。
下記コマンドでバージョンを確認します。
$PSVersionTable
果たして結果は・・・
Name Value
---- -----
PSVersion 5.1.17763.5696
バージョン5.1なので大丈夫そうですね。
STEP3 WinRMを設定する
まずはリモート操作を有効にします。
Enable-PSRemoting -Force
これでリモート操作が有効になりました。
次に以下設定を3つ入れます。
① NetworkCategoryをPrivateにする
Set-NetConnectionProfile -NetworkCategory Private
確認コマンドで確認します。
Get-NetConnectionProfile
結果は・・・
NetworkCategory : Private
NetworkCategoryがPrivateになりました。
② Basic=trueにする
winrm set winrm/config/service/auth '@{Basic="true"}'
一応確認コマンドでも確認しておきます。
winrm get winrm/config/service/auth
結果は・・・
Auth
~中略~
Basic = true
はい、大丈夫そうですね。
③ AllowUnencrypted=trueにする
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
こちらも確認コマンドで確認しておきます。
winrm get winrm/config/service
結果は・・・
Service
~中略~
AllowUnencrypted = true
これでWinRMが有効になり、準備が整いました!
①-2 Playbookを用意する
WinRMの準備が出来たので次はPlaybookの準備です。
今回用意するPlaybookは以下の3つです。
ファイル名 | 使用目的 |
---|---|
1-install_iis.yml | IISインストール用 |
2-start_service_iis.yml | IIS起動用 |
3-setting_iis.yml | 設定内容の記述用 |
Playbookの例を下に記載しておきます。
Playbookは変数化してありますので、変数に代入する値を好きなものに変更すればIIS以外のものもWindowsServerに入れることが出来ますよ。
皆様はこちらを参考にしてPlaybookを作成しておいてください。
1-install_iis.yml・・・IISをインストールします。
- name: install iis
win_feature:
name: {{ package_name }}
2-start_service_iis.yml・・・IISを起動します。
- name: start iis service
win_service:
name: {{ service_name }}
state: started
3-setting_iis.yml・・・諸設定を行います。
- name: Create website directory
win_file:
path: "{{ iis_path }}"
state: directory
- name: Create website
win_iis_website:
name: "{{ iis_name }}"
state: started
port: "{{ iis_port }}"
physical_path: "{{ iis_path }}"
- name: restart IIS service
win_service:
name: W3Svc
state: restarted
start_mode: auto
- name: Open port for website on the firewall
win_firewall_rule:
name: "iisport{{ iis_port }}"
enable: yes
state: present
localport: "{{ iis_port }}"
action: Allow
direction: In
protocol: Tcp
- name: Copy website index.html
win_copy:
src: "{{ CPF_index_html }}"
dest: '{{ iis_path }}\index.html'
こちらのPlaybookで行っている設定内容は以下の通りです。
①-3 htmlファイルを用意する
Webサイト表示用のhtmlファイルも用意しちゃいますよ。
以下にサンプルを貼っておきますが、自前で好きなhtmlファイルを用意してくれてもいいです。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<style type="text/css">
body{
margin: 0 ;
padding: 0 ;
font-size: 15px ;
line-height: 1.618 ;
}
.header{
border-bottom: 3px solid #b5c7d3 ;
padding: 1em 3em ;
background: #0f4c81 ;
color: #fff;
}
.footer{
border-top: 3px solid #b5c7d3 ;
text-align: center ;
padding: 1em 0 ;
background: #0f4c81 ;
color: #fff;
}
.wrapper{
width: 1000px ;
margin: 0 auto ;
padding: 2em 0 ;
overflow: hidden ;
}
.cont{
background: #658dc6 ;
}
.main{
margin-left: 40px;
width: 580px ;
padding: 20px ;
border: 0 solid #b5c7d3 ;
float: left ;
background: #fff ;
}
.side{
width: 300px ;
float: right ;
}
</style>
</head>
<body>
<div class="header">
<h1 class="logo-wrapper">
test IIS Server
</h1>
</div>
<div class="cont">
<div class="wrapper">
<div class="main">
<h1>Hello! This is test IIS Server</h1>
<p>ThisThisThisThis<br>isisisis<br>testtesttesttest<br>IISIISIISIIS<br>ServerServerServerServer</p>
</div>
<div class="side">
<div class="menulist">
<h2>menu</h2>
<ul>
<li>1st menu</li>
<li>2nd menu</li>
<li>3rd menu</li>
</ul>
</div>
</div>
</div>
</div>
<div class="footer">
<p>This is test IIS Server</p>
</div>
</body>
</html>
②仕込編:ITAへの情報の登録
ここからは、ITAを操作して必要なデータを登録していきます。
②-1 作業対象ホストを登録する
STEP1 「Ansible共通」 >> 「機器一覧」を開く
開いたら登録ボタンを押します。
STEP2 項目の入力を行う
WinRM接続情報を入力します。
追加ボタンを押すことで、項目を増やすことが出来ます。
※ここに画像
WindowsServerを作業対象サーバとしてAnsibleLegacyを実行する場合は、機器一覧にWinRM接続情報を入力する必要があるようです。
ホスト名 | IPアドレス | ユーザ | パスワード | 認証方式 |
---|---|---|---|---|
example-ws1 | XXX.XXX.XXX.XXX | Administrator | xxxxxxxx | パスワード認証(winrm) |
example-ws2 | XXX.XXX.XXX.XXX | Administrator | xxxxxxxx | パスワード認証(winrm) |
※1 ポート番号は、未入力の場合はデフォルト(5985)でのWinRM接続となるので未入力となります。状況に応じて設定してください。
※2 サーバー証明書は、WinRM接続ポートでhttpsのポート番号を指定した場合に入力するものなので、今回はhttps接続ではないので未入力です。こちらも状況に応じて設定してください。
STEP3 編集確認ボタンを押す
編集確認ボタンを押すと編集確認画面がポップアップしてきます。
内容を確認して大丈夫そうなら編集反映ボタンを押します。
②-2 Movementを作成する
STEP1 「Ansible-Legacy」 >> 「Movement一覧」を開く
登録ボタンを押します。
STEP2 項目の入力を行う
Movementの情報を登録します。
追加ボタンを押すことで項目を増やすことが出来ます。
Movement名は任意ですが、今回はplaybook3つ登録するので、それに対応する名称を付けました。
Windows Serverの場合は、Movement一覧のWinRM接続を「True」にします。
Movement名 | ホスト指定形式 | WinRM接続 |
---|---|---|
Install_IIS | IP | True |
Start_Service_IIS | IP | True |
Setting_IIS | IP | True |
STEP3 編集確認ボタンを押す
編集確認ボタンを押すと編集確認画面がポップアップしてきます。
内容を確認して大丈夫そうなら編集反映ボタンを押します。
②-3 Playbookを登録する
STEP1 「Ansible-Legacy 」 >> 「Playbook素材集」を開く
登録ボタンを押します。
STEP2 項目の入力&ファイルのアップロードをする
用意しておいたPlaybookをそれぞれアップロードします。
追加ボタンを押すことで、項目を増やすことが出来ます。
Playbook素材名 | Playbook素材 |
---|---|
Install_IIS | 1-install_iis.yml |
Start_Service_IIS | 2-start_service_iis.yml |
Setting_IIS | 3-setting_iis.yml |
Playbook素材名は任意の名称が付けられます。
わかりやすい名前を付けてあげましょう。
STEP3 編集確認ボタンを押す
編集確認ボタンを押すと編集確認画面がポップアップしてきます。
内容を確認して大丈夫そうなら編集反映ボタンを押します。
②-4 htmlファイルを登録する
STEP1 「Ansible共通」 >> 「ファイル管理」を開く
登録ボタンを押します。
STEP2 項目の入力&ファイルのアップロードをする
用意しておいたhtmlファイルをアップロードします。
htmlファイルに限らず、Playbook内で使用するPlaybook以外のファイルは基本的にここからアップロードします。
ファイル埋込変数名 | ファイル素材 |
---|---|
CPF_index_html | 4-index.html |
STEP3 編集確認ボタンを押す
編集確認ボタンを押すと編集確認画面がポップアップしてきます。
内容を確認して大丈夫そうなら編集反映ボタンを押します。
②-5 Movement-Playbook紐付を登録する
STEP1 「Ansible-Legacy」 >> 「Movement-Playbook紐付」を開く
ここで②-2で登録したMovementと、②-3で登録したplaybookを紐付けます。
登録ボタンを押します。
STEP2 項目を入力&プルダウンから選択する
追加ボタンを押すことで、項目を増やすことが出来ます。
Movement名 | Playbook素材 | インクルード順序(※) |
---|---|---|
Install_IIS | Install_IIS | 1 |
Start_Service_IIS | Start_Service_IIS | 1 |
Setting_IIS | Setting_IIS | 1 |
※ インクルード順序は、Movement1個に対して複数のプレイブックを登録するときの順序を指定します。今回登録するプレイブックは1つなので「1」と設定します。
STEP3 編集確認ボタンを押す
編集確認ボタンを押すと編集確認画面がポップアップしてきます。
内容を確認して大丈夫そうなら編集反映ボタンを押します。
②-6 Conductorを作成する
STEP1 「Conductor」 >> 「Conductor編集/作業実行」を開く
ここでは、Movementを何個かつなげて1つのワークフローを作成します。
STEP2 名称を入力する
Conductorの任意の名称を設定します。
名称 |
---|
IIS構築 |
STEP3 Movementをドラッグ&ドロップする
右下のMovement一覧から、使用するMovementを選んで作業フィールドにドラッグ&ドロップし、実行したいワークフローの順番に並べます。
STEP4 Nodeをつなげる
並べたNode(各Movementのこと)のOUT-INをつなげます。OUTやINのところのネジのようなマークから、マウスをドラッグしてつなげられます。
STEP5 登録ボタンを押す
②-7 メニューグループを作成する
STEP1 「管理コンソール」 >> 「メニューグループ管理」を開く
ここではこの後作成するパラメータシートで指定するメニューグループを作成します。
登録ボタンを押します。
STEP2 項目を入力する
メニューグループに関する情報を入力します。
メニューグループ名(ja) | メニューグループ名(en) | パラメータシート作成利用フラグ | 表示順序 |
---|---|---|---|
WindowsServer | WindowsServer | True | 210 |
WindowsServer(参照用) | WindowsServer(For reference) | True | 220 |
今回は「WindowsServer」としました。
参照用ってなんやねんって思った人は下記補足を開いてみてください。
参照用って何?
STEP3 編集確認ボタンを押す
編集確認ボタンを押すと編集確認画面がポップアップしてきます。
内容を確認して大丈夫そうなら編集反映ボタンを押します。
②-8 パラメータシートを作成する
STEP1 「パラメータシート作成」 >> 「パラメータシート定義・作成」を開く
ここでは、メニューグループ配下のメニューを作成します。
STEP2 基本情報を入力する
パラメータシート名 | パラメータシート名(REST) | 作成対象 | 表示順序 |
---|---|---|---|
IIS設定 | IIS_Setting | パラメータシート(ホスト/オペレーションあり) | 1 |
IISインストール | IIS_Install | パラメータシート(ホスト/オペレーションあり) | 1 |
IIS起動 | IIS_Start | パラメータシート(ホスト/オペレーションあり) | 1 |
STEP3 対象メニューグループを入力する
入力用 | 代入値自動登録用 | 参照用 |
---|---|---|
WindowsServer | 代入値自動登録用 | WindowsServer(参照用) |
STEP4 パラメータシートの項目名を定義する
以下を入力かプルダウンから選択します。
項目の個数は「項目」ボタンで増やしていけます。
IISインストール
項目名※1 | 項目名(REST)※1 | 入力方式※2 | 最大バイト数 |
---|---|---|---|
Package_name | package_name | 文字列(単一行) | 64 |
IIS起動
項目名※1 | 項目名(REST)※1 | 入力方式※2 | 最大バイト数 |
---|---|---|---|
Service_name | service_name | 文字列(単一行) | 64 |
IIS設定
項目名※1 | 項目名(REST)※1 | 入力方式※2 | 最大バイト数 |
---|---|---|---|
Path | path | 文字列(単一行) | 32 |
Name | name | 文字列(単一行) | 32 |
Port | port | 文字列(単一行) | 32 |
STEP5 作成ボタンを押す
②-9 代入値自動登録設定を行う
STEP1 「Ansible-Legacy」 >> 「代入値自動登録設定」を開く
ここではパラメータシートのデータと代入値を紐付けます。
登録ボタンを押します。
STEP2 項目をプルダウンから選択する
追加ボタンを押すことで、項目を増やすことが出来ます。
IIS設定
メニューグループ:メニュー:項目 | 登録方式 | Movement名 | Movement名:変数名 |
---|---|---|---|
代入値自動登録用:IISインストール:パラメータ/Package_name | Value型 | Install_IIS | Install_IIS:package_name |
代入値自動登録用:IIS設定:パラメータ/Name | Value型 | Setting_IIS | Setting_IIS:iis_name |
代入値自動登録用:IIS設定:パラメータ/Path | Value型 | Setting_IIS | Setting_IIS:iis_path |
代入値自動登録用:IIS設定:パラメータ/Port | Value型 | Setting_IIS | Setting_IIS:iis_port |
代入値自動登録用:IIS起動:パラメータ/Service_name | Value型 | Setting_IIS | Start_Service_IIS:service_name |
|
STEP3 編集確認ボタンを押す
編集確認ボタンを押すと編集確認画面がポップアップしてきます。
内容を確認して大丈夫そうなら編集反映ボタンを押します。
③実行編:ITAで作業の実行をし、IISをWindows Serverに投入
ここまで設定してきたConductorをついに実行します。
ここまでは設定だったので2回目以降Conductorを動かしたいだけの場合は実行編からで大丈夫です。
③-1 オペレーションを新規登録する
STEP1 「基本コンソール」 >> 「オペレーション一覧」を開く
ITAの実行単位であるオペレーションを作成します。
登録ボタンを押します。
STEP2 項目を入力する
オペレーション名は任意ですが、わかりやすい名前を付けてあげるのが良いでしょう。
実施予定日時はあくまでも予定で、今回入力した日時に実行される訳ではないので気を付けましょう。
オペレーション名 | 実施予定日時 |
---|---|
Install IIS | 2024/06/10 17:30:00 |
STEP3 編集確認ボタンを押す
編集確認ボタンを押すと編集確認画面がポップアップしてきます。
内容を確認して大丈夫そうなら編集反映ボタンを押します。
③-2 パラメータシートにデータを登録する
STEP1 「WindowsServer」 >> 「IIS設定」を開く
②-8で作成したパラメータシートにデータを入力します。
WindowsServerメニューは正しくパラメータシートが作成できていればメインメニューに出来ているはずです。
登録ボタンを押します。
STEP2 項目を入力する
IISインストール
ホスト名 | オペレーション名 | Package_name |
---|---|---|
example-ws1 | 2024/06/10 17:30_Install IIS | Web-Server |
example-ws2 | 2024/06/10 17:30_Install IIS | Web-Server |
IIS設定
ホスト名 | オペレーション名 | Path | Name | Port |
---|---|---|---|---|
example-ws1 | 2024/06/10 17:30_Install IIS | C:\sites\Myweb | TestWeb | 8080 |
example-ws2 | 2024/06/10 17:30_Install IIS | C:\sites\Myweb2 | TestWeb2 | 8080 |
IISインストール
ホスト名 | オペレーション名 | Service_name |
---|---|---|
example-ws1 | 2024/06/10 17:30_Install IIS | W3Svc |
example-ws2 | 2024/06/10 17:30_Install IIS | W3Svc |
STEP3 編集確認ボタンを押す
編集確認ボタンを押すと編集確認画面がポップアップしてきます。
内容を確認して大丈夫そうなら編集反映ボタンを押します。
③-3 Conductorを実行する
STEP1 「Conductor」 >> 「Conductor編集/作業実行」を開く
それではConductorとオペレーションを紐付けて、実行します。
選択ボタンを押します。
STEP2 「Conductor選択」より②-6で作成したConductorを選択する
Conductor名称 |
---|
IIS構築 |
STEP3 「オペレーション選択」より③-1で作成したオペレーションを選択する
オペレーション名 |
---|
Install IIS |
STEP4 作業実行設定の作業実行ボタンを押す。
STEP5 Statusが正常終了になっていることを確認する
各Movementも緑色の「DONE」になっていて、完了していることがわかりますね。
③-4 Movementごとの詳細結果を確認する
STEP1 確認したいMovementのNodeのDoneを押す
③-5 実機で確認する
STEP1 クライアントPCのブラウザから、作業対象サーバのIPアドレスとポート番号にアクセスする
STEP2 登録したhtmlが表示されていればOK!
3. いかがでしたか?
今回はITAでWindows Serverの自動設定方法をまとめてみました。
ITAはWinRMを使ってWindowsServerの設定も出来てしまう優秀なフレームワークだという事がわかりましたね。
今回使用した各機能についてについてもっと知りたい方はマニュアルを見てみてくださいね。