LoginSignup
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-11-06

関連リンク

はじめに

ITA(Exastro IT Automation)は、システム設定をIaC(Infrastructure as Code)化して一元管理や自動実行するためのオープンソースフレームワークです。

システム構成に関するさまざまな情報(機器情報、設定値、作業履歴など)を管理することと、AnsibleなどのPF構築ツールと連携してシステム構築や運用設定などを実行する機能を備えています。

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

こちらは構成環境予定図です。
今回は作業対象のWindows Serverを2つにしてみます。
01.png

今回紹介するシナリオ

大まかな流れとしてはこのようになります。

【準備編】・・・AnsibleがWindows Serverに接続できるようWinRMを設定する。
        必要素材を用意する。
  ↓
【仕込編】・・・ITAに必要な情報を登録する。
  ↓
【実行編】・・・ITAで作業実行し、IISをWindows Serverに投入する。
  ↓
 完了

これをもとに、以下のように具体的な手順をご説明していきたいと思います。


1.【準備編】
 1-1 AnsibleがWindows Serverに接続できるようWinRMを設定する
 1-2 playbookを用意する
 1-3 htmlファイルを用意する
2.【仕込編】
 2-1 作業対象ホストを登録する
 2-2 Movementを作成する
 2-3 playbookを登録する
 2-4 htmlファイルを登録する
 2-5 Movement詳細を登録する
 2-6 Conductorを作成する
 2-7 メニューグループを作成する
 2-8 メニューを作成する
 2-9 パラメータシートの項目名を定義する
 2-10 代入値自動登録設定を行う
3.【実行編】
 3-1 オペレーションを新規登録する
 3-2 パラメータシートにデータを登録する
 3-3 作業対象ホストを登録する
 3-4 代入値を確認する
 3-5 Conductorを実行する
 3-6 Movementごとの詳細結果を確認する
 3-7 実機で確認する


1.【準備編】

1-1 WinRMでWindows Serverに接続する

AnsibleをWindows Serverに接続させるために、WinRMを有効にします。
(基本的にAnsibleは、対象となるサーバにSSHで接続しますが、Windows ServerではデフォルトでSSH接続ができないため、代替手段としてWindows Remote Management(WinRM)を使います。)

※今回はPowerShellから直接コマンド入力で設定しましたが、Ansibleから設定のためのスクリプトが出ているようなので、そちらでやってみても良さそうです。
Ansible WinRMの設定

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

②PowerShell のバージョンを確認する
PowerShellはバージョン3.0以上が必須なようなので、バージョンを確認します。

PS > $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.14393.3866

バージョン5.1なのでOKでした。

③WinRMを設定する
まずリモート操作を有効にします。

PS > Enable-PSRemoting -Force

次に以下3点を確認します。

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

これでwinRMが有効になりました。

1-2 playbookを用意する

今回は以下の3つのplaybookを使用します。

ファイル名 使用目的
1-install_iis.yml IISインストール用
2-start_service_iis.yml IIS起動用
3-setting_iis.yml 設定内容の記述用

①以下よりファイル名とコードをコピペして保存する
1-install_iis.yml・・・IISをインストールします。

1-install_iis.yml
- name: install iis
  win_feature:
    name: Web-Server
    state: present

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

2-start_service_iis.yml
- name: start iis service
  win_service:
    name: W3Svc
    state: started

3-setting_iis.yml・・・設定内容は以下の通りです。
qiita_31.png

3-setting_iis.yml
- name: Create website directory
  win_file:
    path: "{{ VAR_path }}"
    state: directory

- name: Create website
  win_iis_website:
    name: "{{ VAR_name }}"
    state: started
    port: "{{ VAR_port }}"
    physical_path: "{{ VAR_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{{ VAR_port }}"
    enable: yes
    state: present
    localport: "{{ VAR_port }}"
    action: Allow
    direction: In
    protocol: Tcp

- name: Copy website index.html
  win_copy:
    src: "{{ CPF_index_html }}"
    dest: '{{ VAR_path }}\index.html'

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

①Webサイト表示用に、任意の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! My test IIS Server</h1>
            <p>testtesttesttest<br>testtesttesttest<br>testtesttesttest<br>testtesttesttest<br>testtesttesttest</p>
      </div>
      <div class="side">
        <div class="menulist">
            <h2>menu</h2>
            <ul>
                <li>menu1</li>
                <li>menu2</li>
                <li>menu3</li>
            </ul>
        </div>
      </div>
    </div>
  </div>
  <div class="footer">
    <p>My test IIS Server</p>
  </div>
</body>
</html>

2.【仕込編】

それでは、ITAに必要なデータを登録していきます。

2-1 作業対象ホストを登録する

①「基本コンソール」 >> 「機器一覧」 を開く
登録開始ボタンを押す。

②以下の項目を入力する
WinRM接続情報を入力します。
WindowsServerを作業対象サーバとしてAnsibleLegacyを実行する場合は、機器一覧にWinRM接続情報を入力する必要があるようです。

ホスト名 IPアドレス ログインユーザID 管理 ログインパスワード 認証方式
ita-win1 192.0.2.10 Administrator xxxxxxxx パスワード認証
ita-win2 192.0.2.11 Administrator xxxxxxxx パスワード認証

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

③登録ボタンを押す
qiita_06.png

2-2 Movementを作成する

①「Ansible-Legacy」 >> 「Movement一覧」 を開く
登録開始ボタンを押す。

②以下の項目を入力する
・ Movement名は任意ですが、今回はplaybook3つ登録するので、それに対応する名称を付けました。
・Windows Serverの場合は、Movement一覧のWinRM接続を「●」にします。

Movement名(任意の名称) ホスト指定形式 WinRM接続
Install_IIS IP
Start_Service_IIS IP
Setting_IIS IP

qiita_07.png
③登録ボタンを押す

2-3 playbookを登録する

①「Ansible-Legacy 」 >> 「プレイブック素材集」 を開く
登録開始ボタンを押す。

②以下の項目を入力/アップロードする
用意しておいたplaybookをそれぞれアップロードします。
・playbook素材名は任意です。今回はわかりやすく、ymlファイル名と同じにしました。
・プレイブック素材は、ファイルを選択してから「事前アップロード」ボタンを押さないと登録できないようです。

プレイブック素材名(任意の名称) プレイブック素材
Install_IIS 1-install_iis.yml
Start_Service_IIS 2-start_service_iis.yml
Setting_IIS 3-setting_iis.yml

qiita_08.png
③登録ボタンを押す

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

用意しておいたhtmlファイルを登録します。

①「Ansible共通」 >> 「ファイル管理」 を開く
登録開始ボタンを押す。

②以下の項目を入力/アップロードする

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

qiita_24.png
③登録ボタンを押す

2-5 Movement詳細を登録する

2-2で登録したMovementと、2-3で登録したplaybookを関連付けます。

①「Ansible-Legacy 」 >> 「Movement詳細」 を開く
登録開始ボタンを押す。

②以下の項目を入力/プルダウンから選択する

Movement(プルダウンから選択) プレイブック素材(プルダウンから選択) インクルード順序(※)
Install_IIS install_iis 1
Start_Service_IIS start_service_iis 1
Setting_IIS setting_iis 1

※ インクルード順序は、Movement1個に対して複数のプレイブックを登録するときの順序を指定します。今回登録するプレイブックは1つなので、「1」と設定します。

qiita_09.png
③登録ボタンを押す

2-6 Conductorを作成する

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

①「Conductor」 >> 「Conductorクラス編集」 を開く

②Nameを入力する
Conductorの名称を入力します。今回は「IIS構築」としました。

Name(任意の名称)
IIS構築

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

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

⑤登録ボタンを押す

qiita_15.png

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

①「管理コンソール」 >> 「メニューグループ管理」 を開く
登録開始ボタンを押す。

②以下の項目を入力する
今回は「WindowsServer」としました。

「参照用」についてはこちらをご覧ください。

参照用って何?

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

メニューグループ名称(任意の名称) 表示順序
WindowsServer 200
WindowsServer(参照用) 201

qiita_10.png

③登録ボタンを押す
ちなみにメニューグループ配下にあるメニューを作成(2-8参照)しないと、トップ画面にメニューグループのアイコンが表示されないようです。

2-8 メニューを作成する

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

①「メニュー作成」 >> 「メニュー定義/作成」 を開く
登録開始ボタンを押す。

②「基本情報」を入力する

メニュー名(任意の名称) 作成対象(プルダウンから選択) 表示順序(※) 用途
IIS設定 パラメータシート(ホスト/オペレーション含む) 1 ホスト用

qiita_11.png

③「対象メニューグループ」を入力する
「対象メニューグループ」ボタンを押すとモーダルが開くので、以下のように選択します。

Host Reference
WindowsServer WindowsServer(参照用)

qiita_12.png
↓ 2-9に続く。

2-9 パラメータシートの項目名を定義する

2-8と同じ画面で入力します。
パラメータシートの項目を作成します。

①以下を入力/プルダウンから選択する

項目(任意の名称) 入力方式(プルダウンから選択) 最大バイト数
path 文字列(単一行) 32
name 文字列(単一行) 32
port 文字列(単一行) 32

※ 項目の個数は「項目」ボタンで増やしていけます。

②「作成」ボタンを押す
qiita_16.png

2-10 代入値自動登録設定を行う

①「Ansible-Legacy」 >> 「代入値自動登録設定」 を開く
登録開始ボタンを押す。

②以下の項目をプルダウンから選択する

メニューグループ:メニュー 項目 登録方式 Movement Value変数-変数名
WindowsServer:IIS設定 パラメータ/path Value型 Setting_IIS VAR_path
WindowsServer:IIS設定 パラメータ/name Value型 Setting_IIS VAR_name
WindowsServer:IIS設定 パラメータ/port Value型 Setting_IIS VAR_port

qiita_17.png
⑤登録ボタンを押す

3.【実行編】

それではConductorを実行していきます。
2回目以降の作業は、この【実行編】だけでOKです。

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

①「基本コンソール」 >> 「投入オペレーション一覧」 を開く
登録開始ボタンを押す。

②以下の項目を入力する
オペレーション名は任意ですが、今回はplaybookやMovementと同様にしました。

オペレーション名(任意の名称) 実施予定日時(任意の時間)
Install IIS 2020/11/01 00:00

qiita_13.png
③登録ボタンを押す

3-2 パラメータシートにデータを登録する

2-9で作成したパラメータシートに、データを入力します。

①「WindowsServer」 >> 「IIS設定」 を開く
こちらは2-8で作成したメニューになります。
登録開始ボタンを押します。

②以下の項目を入力する

ホスト名 オペレーション名 path name port
ita-win1 Install IIS C:\sites\Myweb TestWeb 8080
ita-win2 Install IIS C:\sites\Myweb2 TestWeb2 8080

qiita_18.png
③登録ボタンを押す

3-3 作業対象ホストを登録する

2-1で登録したホストと2-2で作成したMovement、3-1で作成したオペレーションを関連付けます。

①「Ansible-Legacy」 >> 「作業対象ホスト」 を開く
登録開始ボタンを押す。

②以下の項目をプルダウンから選択する

オペレーション Movement ホスト
Install IIS Install_IIS ita-win1
Install IIS Install_IIS ita-win2
Install IIS Start_Service_IIS ita-win1
Install IIS Start_Service_IIS ita-win2

qiita_14.png
③登録ボタンを押す

④代入値自動登録で追加された2行分も含め、一覧で以下のように表示されているのを確認する
qiita_30.png

3-4 代入値を確認する

今回投入するデータが代入されているか確認します。

①「Ansible-Legacy」 >> 「代入値管理」 を開く

②「表示フィルタ」>>「フィルタ」ボタンを押す

③「一覧/更新」に一覧が表示されるので、データが代入されているか確認する

オペレーション Movement ホスト 変数名 具体値
Install IIS Setting_IIS ita-win1 VAR_port 8080
Install IIS Setting_IIS ita-win1 VAR_path C:\sites\Myweb
Install IIS Setting_IIS ita-win1 VAR_name TestWeb
Install IIS Setting_IIS ita-win2 VAR_port 8080
Install IIS Setting_IIS ita-win2 VAR_path C:\sites\Myweb2
Install IIS Setting_IIS ita-win2 VAR_name TestWeb2

qiita_19.png

3-5 Conductorを実行する

それではConductorとオペレーションを紐付けて、実行します。

①「Conductor」 >> 「Conductor作業実行」 を開く

②「Conductor[一覧]」より2-6で作成したConductorを選択する

Conductor[一覧]
IIS構築

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

オペレーション[一覧]
Install IIS

qiita_20.jpg
④「Conductor実行」の「実行」ボタンを押す
qiita_21.png

⑤Statusが正常終了になっていることを確認する
各Movementも緑色の「DONE」になっていて、完了していることがわかります。
qiita_23.png

3-6 Movementごとの詳細結果を確認する

①確認したいMovementのNodeを押す
「Operation status」にURLが表示されます。
qiita_25.png

②URLをクリックして、別窓を開く
qiita_26.jpg
③ステータスを確認する
Movement全体のステータスは「対象作業」を確認します。
qiita_27.png
さらに詳しいログは「進行状況(実行ログ)」で確認できるようです。
qiita_28.png

3-7 実機で確認する

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

②登録したhtmlが表示されていればOK!
qiita_29.png

関連リンク

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