ServiceNowのMID ServerをDockerのコンテナに立ててServiceNowインスタンスに登録する

Version: Kingston ※LondonだとMID ServerのバイナリにJREが同梱されないようです

# 作るもの

ServiceNowのMID ServerをDockerのコンテナに立ててServiceNowインスタンスに登録します

```
[root@13a11e35529c agent]# ./start.sh
Starting ServiceNow MID Server...
Waiting for ServiceNow MID Server......
running: PID:87
```

![FireShot Screen Capture #042 - 'MIDDLE_AGES_SERVER I MID Server I Incident Ticket System' - dev48240_service-now_com_nav_to_do_uri=_ecc_agent_do_sys_i.png](https://qiita-image-store.s3.amazonaws.com/0/193272/74e6f223-3fb2-34a8-2dea-68e1527ca9bc.png)

MID Serverを構築する環境は登録したいServiceNowインスタンスにネットワーク的に到達可能な環境で行います

# Docker環境を構築する
## Dockerのインストール

Windows10 Homeで試したのでDocker Toolbox on Windowsをインストールしました

https://docs.docker.com/toolbox/toolbox_install_windows/

![FireShot Screen Capture #029 - 'Install Docker Toolbox on Windows I Docker Documentation' - docs_docker_com_toolbox_toolbox_install_windows.png](https://qiita-image-store.s3.amazonaws.com/0/193272/15de516e-f105-5d8a-9315-899a9930911a.png)

インストールが完了したあとでversionを確認します

```
$ docker version
Client:
 Version:       18.03.0-ce
 API version:   1.37
 Go version:    go1.9.4
 Git commit:    0520e24302
 Built: Fri Mar 23 08:31:36 2018
 OS/Arch:       windows/amd64
 Experimental:  false
 Orchestrator:  swarm

Server:
 Engine:
  Version:      18.05.0-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.10.1
  Git commit:   f150324
  Built:        Wed May  9 22:20:42 2018
  OS/Arch:      linux/amd64
  Experimental: false
```

## MID Server用コンテナの準備

MID Serverを立てる用にCentOS7のコンテナを用意しますimageをpullして

```
$ docker pull centos:centos7
centos7: Pulling from library/centos
7dc0dca2b151: Pull complete
Digest: sha256:b67d21dfe609ddacf404589e04631d90a342921e81c40aeaf3391f6717fa5322
Status: Downloaded newer image for centos:centos7
```

pullしたimageを確認して

```
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              centos7             49f7960eb7e4        3 weeks ago         200MB
```

runして

```
$ docker run -it -d --name centos7 centos:centos7
13a11e35529caf5ac4136e5d77def2c79a7f936273a5237c09f327246d0cc6ab
```

psを確認します

```
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
13a11e35529c        centos:centos7      "/bin/bash"         8 seconds ago       Up 9 seconds                            centos7
```

# MID Serverのインストール
## MID Server用のユーザをServiceNowインスタンスに作成

MID Serverを登録したいServiceNowインスタンスにadminでログインしFilter Navigatorにitomと入力し[Guided Setup] - [ITOM Guided Setup]を表示してGetting startedの[Continue]をクリックします

![FireShot Screen Capture #030 - 'Guided Setup I Incident Ticket System' - dev48240_service-now_com_nav_to_do_uri=_$guided_setup_do#_content_f52f9c00c31.png](https://qiita-image-store.s3.amazonaws.com/0/193272/b8cae7af-34a9-3c52-62e1-4e0d4512aca6.png)

MID Serverの項目の[Continue]をクリックします

![FireShot Screen Capture #031 - 'Guided Setup I Incident Ticket System' - dev48240_service-now_com_nav_to_do_uri=_$guided_setup_do#_content_f52f9c00c31.png](https://qiita-image-store.s3.amazonaws.com/0/193272/50e03a03-2f05-977f-6477-3cf76aed9c1b.png)

Create MID Userの[Configure]をクリックします

![FireShot Screen Capture #032 - 'Guided Setup I Incident Ticket System' - dev48240_service-now_com_nav_to_do_uri=_$guided_setup_do#_content_743013dac39.png](https://qiita-image-store.s3.amazonaws.com/0/193272/3354fc47-e6cf-9037-c03d-77492a6d8621.png)

Create MID Sever UserでUser nameとPasswordとConfirm passwordを入力し[Submit]をクリックします

![FireShot Screen Capture #034 - 'Create MID Server User I Incident Ticket System' - dev48240_service-now_com_nav_to_do_uri=_$mid_server_user_do.png](https://qiita-image-store.s3.amazonaws.com/0/193272/c50219a0-d665-6a19-448f-2c164a37d2a0.png)

MID Server用のユーザが作成されます[Back to Guided Setup]をクリックして前の画面に戻ります

![FireShot Screen Capture #035 - 'Create MID Server User I Incident Ticket System' - dev48240_service-now_com_nav_to_do_uri=_$mid_server_user_do.png](https://qiita-image-store.s3.amazonaws.com/0/193272/691525df-a038-4fc6-f1d7-6f486bdc6277.png)

## MID Serverのダウンロード

Download & Install MIDの[Configure]をクリックします

![FireShot Screen Capture #036 - 'Guided Setup I Incident Ticket System' - dev48240_service-now_com_nav_to_do_uri=_$guided_setup_do#_content_743013dac39.png](https://qiita-image-store.s3.amazonaws.com/0/193272/b8e99734-7c72-0443-fc58-349a5fd06ffd.png)

MID Serverを立てたいOSのバイナリをダウンロードします

![FireShot Screen Capture #037 - 'Incident Ticket System' - dev48240_service-now_com_nav_to_do_uri=_mid_server_download_ui_do.png](https://qiita-image-store.s3.amazonaws.com/0/193272/a1bbbf37-5cec-291a-526d-cc889ecaf072.png)

ダウンロードして解凍するとagentというディレクトリ以下にJavaアプリっぽい構成のファイルがありました ※LondonだとMID ServerのバイナリにJREが同梱されないようです

```
2018/06/30  09:42    <DIR>          .
2018/06/30  09:42    <DIR>          ..
2018/06/30  09:41    <DIR>          bin
2018/06/30  09:41    <DIR>          conf
2018/04/20  12:00             7,259 config.xml
2018/06/30  09:41    <DIR>          etc
2018/04/20  12:00            18,509 EULA.docx
2018/04/20  12:00    <DIR>          extlib
2018/04/20  12:16               505 installer.bat
2018/04/20  12:16               509 installer.sh
2018/06/30  09:41    <DIR>          jetty
2018/06/30  09:41    <DIR>          jre
2018/06/30  09:42    <DIR>          lib
2018/04/20  12:00    <DIR>          logs
2018/06/30  09:42    <DIR>          midinstaller
2018/06/30  09:41    <DIR>          package
2018/06/30  09:41    <DIR>          properties
2018/04/20  12:00            19,938 README.docx
2018/04/20  12:00         2,786,132 ServiceNow Open Source Disclosure 110217KMS0.pdf
2018/04/20  12:00                17 start.bat
2018/04/20  12:00                16 start.sh
2018/04/20  12:00                16 stop.bat
2018/04/20  12:00                15 stop.sh
2018/04/20  12:00    <DIR>          work
2018/04/20  12:16            26,235 wrapper-development-license-1.1.txt
2018/04/20  12:16            11,952 wrapper-tsims-addendum-1.1.txt
              12 個のファイル           2,871,103 バイト
```

## MID Serverのインストール

GUIのインストーラーもあるようなのですがCUIの環境しかないのでコンソールで行いますagentディレクトリをコンテナの/root以下に配置します

```
>docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
13a11e35529c        centos:centos7      "/bin/bash"         26 minutes ago      Up 26 minutes                           centos7
>docker cp agent 13a11e35529c:/root
```

コンテナにbashで入ります

```
>docker exec -it centos7 /bin/bash
[root@13a11e35529c /]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
```

agentディレクトリ直下のconfig.xmlのバックアップを取得後url(MID Serverを登録したいServiceNowインスタンス), username(MID Server用のユーザID), password(MID Serer用のパスワード), name(ServiceNowインスタンスに登録されるMID Serverの名前)の4か所を編集します

```
[root@13a11e35529c agent]# cp -pr config.xml config.xml.bak`date +%Y%m%d`
[root@13a11e35529c agent]# ls -ltr config.xml*
-rwxr-xr-x 1 root root 7259 Apr 20 03:00 config.xml.bak20180630
-rwxr-xr-x 1 root root 7259 Apr 20 03:00 config.xml
[root@13a11e35529c agent]# vi config.xml
[root@13a11e35529c agent]# diff config.xml config.xml.bak20180630
26c26
<     <parameter name="url" value="https://dev*****.service-now.com/"/>
---
>     <parameter name="url" value="https://YOUR_INSTANCE.service-now.com/"/>
31,32c31,32
<     <parameter name="mid.instance.username" value="22_percent_cooler"/>
<     <parameter secure="true" name="mid.instance.password" value="********"/>
---
>     <parameter name="mid.instance.username" value="YOUR_INSTANCE_USER_NAME_HERE"/>
>     <parameter secure="true" name="mid.instance.password" value="YOUR_INSTANCE_PASSWORD_HERE"/>
37c37
<     <parameter name="name" value="MIDDLE_AGES_SERVER"/>
---
>     <parameter name="name" value="YOUR_MIDSERVER_NAME_GOES_HERE"/>
```

## MID Serverの起動

start.shでMID Serverを起動します停止するときはstop.shを使う様です

```
[root@13a11e35529c agent]# ./start.sh
Starting ServiceNow MID Server...
Waiting for ServiceNow MID Server......
running: PID:87
```
# ServiceNowインスタンスにMID Serverを登録

MID Serverの起動に成功するとServieNowインスタンスの[MID Server] - [Servers]に起動したMID Serverが登録されています

![FireShot Screen Capture #038 - 'MID Servers I Incident Ticket System' - dev48240_service-now_com_nav_to_do_uri=_ecc_agent_list_do_sysparm_userpref_mod.png](https://qiita-image-store.s3.amazonaws.com/0/193272/9c2acec1-5e31-e1ed-eaf1-034f4b26f951.png)

MID ServerのnameをクリックしてValidateのリンクをクリックして[Save]をクリックしてValidateします

![FireShot Screen Capture #041 - 'MIDDLE_AGES_SERVER I MID Server I Incident Ticket System' - dev48240_service-now_com_nav_to_do_uri=_ecc_agent_do_sys_i.png](https://qiita-image-store.s3.amazonaws.com/0/193272/cd36db04-cf59-f80e-78ab-e8ff7e67296c.png)

ValidatedがYesになりました

![FireShot Screen Capture #042 - 'MIDDLE_AGES_SERVER I MID Server I Incident Ticket System' - dev48240_service-now_com_nav_to_do_uri=_ecc_agent_do_sys_i.png](https://qiita-image-store.s3.amazonaws.com/0/193272/36640c84-2aed-b84b-2e0e-515a5de5913e.png)