0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Exastro IT Automation2でWindows Serverの自動設定をやってみた

Last updated at Posted at 2024-06-24

1. はじめに

本記事はExastro IT Automation2(以下ITA)を用いてWindows Serverの設定を自動化する手順を記録した記事です。
ITAについて詳しく知りたい!って人はExastroコミュニティサイトへどうぞ。

2. 今回やること

今回はWindows Server2台を対象として、IIS(Microsoft Internet Information Services)をインストールして設定を投入するところまでやってみたいと思います。

こちらは構成環境予定図です。
Diagram.png

では今回の流れです。

① 準備編: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をインストールします。

1-install_iis.yml
- name: install iis
  win_feature:
    name: {{ package_name }}

2-start_service_iis.yml・・・IISを起動します。

2-start_service_iis.yml
- name: start iis service
  win_service:
    name: {{ service_name }}
    state: started

3-setting_iis.yml・・・諸設定を行います。

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で行っている設定内容は以下の通りです。
SS41.png

①-3 htmlファイルを用意する

Webサイト表示用のhtmlファイルも用意しちゃいますよ。
以下にサンプルを貼っておきますが、自前で好きなhtmlファイルを用意してくれてもいいです。

4-index.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)

SS2.png
※1 ポート番号は、未入力の場合はデフォルト(5985)でのWinRM接続となるので未入力となります。状況に応じて設定してください。
※2 サーバー証明書は、WinRM接続ポートでhttpsのポート番号を指定した場合に入力するものなので、今回はhttps接続ではないので未入力です。こちらも状況に応じて設定してください。

STEP3 編集確認ボタンを押す

編集確認ボタンを押すと編集確認画面がポップアップしてきます。
内容を確認して大丈夫そうなら編集反映ボタンを押します。
SS3.png

②-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

SS4.png

STEP3 編集確認ボタンを押す

編集確認ボタンを押すと編集確認画面がポップアップしてきます。
内容を確認して大丈夫そうなら編集反映ボタンを押します。
SS5.png

②-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素材名は任意の名称が付けられます。
わかりやすい名前を付けてあげましょう。
SS6.png

STEP3 編集確認ボタンを押す

編集確認ボタンを押すと編集確認画面がポップアップしてきます。
内容を確認して大丈夫そうなら編集反映ボタンを押します。
SS7.png

②-4 htmlファイルを登録する

STEP1 「Ansible共通」 >> 「ファイル管理」を開く

登録ボタンを押します。

STEP2 項目の入力&ファイルのアップロードをする

用意しておいたhtmlファイルをアップロードします。
htmlファイルに限らず、Playbook内で使用するPlaybook以外のファイルは基本的にここからアップロードします。

ファイル埋込変数名 ファイル素材
CPF_index_html 4-index.html

SS8.png

STEP3 編集確認ボタンを押す

編集確認ボタンを押すと編集確認画面がポップアップしてきます。
内容を確認して大丈夫そうなら編集反映ボタンを押します。
SS9.png

②-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」と設定します。
SS10.png

STEP3 編集確認ボタンを押す

編集確認ボタンを押すと編集確認画面がポップアップしてきます。
内容を確認して大丈夫そうなら編集反映ボタンを押します。
SS11.png

②-6 Conductorを作成する

STEP1 「Conductor」 >> 「Conductor編集/作業実行」を開く

ここでは、Movementを何個かつなげて1つのワークフローを作成します。

STEP2 名称を入力する

Conductorの任意の名称を設定します。

名称
IIS構築

SS12-1.png

STEP3 Movementをドラッグ&ドロップする

右下のMovement一覧から、使用するMovementを選んで作業フィールドにドラッグ&ドロップし、実行したいワークフローの順番に並べます。

SS12-2.png

STEP4 Nodeをつなげる

並べたNode(各Movementのこと)のOUT-INをつなげます。OUTやINのところのネジのようなマークから、マウスをドラッグしてつなげられます。

SS12-3.png

STEP5 登録ボタンを押す

確認画面がポップアップしてくるので、「OK」を押します。
SS13.png

②-7 メニューグループを作成する

STEP1 「管理コンソール」 >> 「メニューグループ管理」を開く

ここではこの後作成するパラメータシートで指定するメニューグループを作成します。
登録ボタンを押します。

STEP2 項目を入力する

メニューグループに関する情報を入力します。

メニューグループ名(ja) メニューグループ名(en) パラメータシート作成利用フラグ 表示順序
WindowsServer WindowsServer True 210
WindowsServer(参照用) WindowsServer(For reference) True 220

今回は「WindowsServer」としました。
SS14.png
参照用ってなんやねんって思った人は下記補足を開いてみてください。

参照用って何?
パラメータシートを作成すると、データ登録するメニューと合わせて参照用のメニューが自動で作成されます。 参照用メニューは閲覧専用のメニューで、データ登録されたメニューに登録されているオペレーション日時から指定した日付における最新の登録データを参照できるメニューです。 ITAでCMDBを作成する際に自動で作成されます。 ※ここに画像

STEP3 編集確認ボタンを押す

編集確認ボタンを押すと編集確認画面がポップアップしてきます。
内容を確認して大丈夫そうなら編集反映ボタンを押します。
SS15.png

②-8 パラメータシートを作成する

STEP1 「パラメータシート作成」 >> 「パラメータシート定義・作成」を開く

ここでは、メニューグループ配下のメニューを作成します。

STEP2 基本情報を入力する

パラメータシート名 パラメータシート名(REST) 作成対象 表示順序
IIS設定 IIS_Setting パラメータシート(ホスト/オペレーションあり) 1
IISインストール IIS_Install パラメータシート(ホスト/オペレーションあり) 1
IIS起動 IIS_Start パラメータシート(ホスト/オペレーションあり) 1

SS16.png

STEP3 対象メニューグループを入力する

入力用 代入値自動登録用 参照用
WindowsServer 代入値自動登録用 WindowsServer(参照用)

SS17.png

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

※1:任意の名称
※2:プルダウンから選択
SS18.png

STEP5 作成ボタンを押す

確認画面がポップアップしてくるので、「OK」を押します。
SS19.png

②-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

|

SS20.png

STEP3 編集確認ボタンを押す

編集確認ボタンを押すと編集確認画面がポップアップしてきます。
内容を確認して大丈夫そうなら編集反映ボタンを押します。
SS21.png

③実行編:ITAで作業の実行をし、IISをWindows Serverに投入

ここまで設定してきたConductorをついに実行します。
ここまでは設定だったので2回目以降Conductorを動かしたいだけの場合は実行編からで大丈夫です。

③-1 オペレーションを新規登録する

STEP1 「基本コンソール」 >> 「オペレーション一覧」を開く

ITAの実行単位であるオペレーションを作成します。
登録ボタンを押します。

STEP2 項目を入力する

オペレーション名は任意ですが、わかりやすい名前を付けてあげるのが良いでしょう。
実施予定日時はあくまでも予定で、今回入力した日時に実行される訳ではないので気を付けましょう。

オペレーション名 実施予定日時
Install IIS 2024/06/10 17:30:00

SS22.png

STEP3 編集確認ボタンを押す

編集確認ボタンを押すと編集確認画面がポップアップしてきます。
内容を確認して大丈夫そうなら編集反映ボタンを押します。
SS23.png

③-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

SS24.png

STEP3 編集確認ボタンを押す

編集確認ボタンを押すと編集確認画面がポップアップしてきます。
内容を確認して大丈夫そうなら編集反映ボタンを押します。
SS25.png

③-3 Conductorを実行する

STEP1 「Conductor」 >> 「Conductor編集/作業実行」を開く

それではConductorとオペレーションを紐付けて、実行します。
選択ボタンを押します。
SS33.png

STEP2 「Conductor選択」より②-6で作成したConductorを選択する

Conductor名称
IIS構築

SS34.png

Conductorが開くので作業実行ボタンを押します。
SS35.png

STEP3 「オペレーション選択」より③-1で作成したオペレーションを選択する

オペレーション名
Install IIS

SS36.png

STEP4 作業実行設定の作業実行ボタンを押す。

SS37.png

STEP5 Statusが正常終了になっていることを確認する

各Movementも緑色の「DONE」になっていて、完了していることがわかりますね。
SS38.png

③-4 Movementごとの詳細結果を確認する

STEP1 確認したいMovementのNodeのDoneを押す

作業状態確認画面がポップアップしてくるので、確認します。
SS39.png

さらに詳しいログは「実行ログ」タブで確認できるみたいです。
SS40.png

③-5 実機で確認する

STEP1 クライアントPCのブラウザから、作業対象サーバのIPアドレスとポート番号にアクセスする

STEP2 登録したhtmlが表示されていればOK!

image.png

3. いかがでしたか?

今回はITAでWindows Serverの自動設定方法をまとめてみました。
ITAはWinRMを使ってWindowsServerの設定も出来てしまう優秀なフレームワークだという事がわかりましたね。
今回使用した各機能についてについてもっと知りたい方はマニュアルを見てみてくださいね。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?