ServiceNowとNutanixの連携 その1 全体像とMIDサーバ構築【ServiceNow Orlandバージョン対応】

本記事は[Nutanix Advent Calendar 2019 #4](https://adventar.org/calendars/4475) 12/11 分の記事です。

# ServiceNowとNutanixの連携について
## 概要
2019年10月のデンマーク、コペンハーゲンにおける.NEXT ConferenceにおいてServiceNow社とNutanixは両社ソリューションの連携を発表しました。詳しくは以下のURLをご覧下さい。

[Nutanix、プライベートクラウド向け自動化機能を発表](https://www.nutanix.jp/press-releases/2019/10/10/nutanix-announces-new-it-automation-for-private-clouds/)
[ServiceNowとNutanixの統合](https://next.nutanix.com/%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A9%E3%83%A0-70/servicenow%E3%81%A8nutanix%E3%81%AE%E7%B5%B1%E5%90%88-33518)

## ユースケース
執筆時点(2020年6月更新)時点でのユースケースは以下3点です。
1. ServiceNowのイベント、インシデントとNutanixのアラートの統合([その2](https://qiita.com/shocnt/items/7f6b9c587d0da5c82086)で紹介)
2. ServiceNowのリクエスト管理とCalmプラグインによるNutanixへのアプリケーションデプロイ([その3](https://qiita.com/shocnt/items/eaf44807d4776ab3e63c)、[その4](https://qiita.com/shocnt/items/fa51e8c21d9bf8e73f68)で紹介)
3. ServiceNOW CMDBにおけるNutanixインフラの検知とモデリング([その5](https://qiita.com/shocnt/items/4c53a1826cf6457b9852)で紹介)

## アーキテクチャ
アーキテクチャはこちら。上記ユースケース2,3はNutanix側にMIDサーバと呼ばれる、ServiceNowとNutanix間のデータ通信を担う中間サーバが必要となります。
![b2579e26-0328-4c65-80b8-fb910bf6ac1b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/2f5f4d99-6e03-0084-76c3-999ef8bc4b14.png)

# 本シリーズ(全5回)では
ServiceNow社の提供する開発者インスタンスを用いてシンプルなServiceNow-Nutanixの統合環境を作ることを目指します。

# 本記事(その1)では
準備作業として開発者インスタンスの立ち上げとMIDサーバの立ち上げを行います。

# 手順
## 1. ServiceNow開発者インスタンスの立ち上げ
[こちら](https://qiita.com/diapers_and_snow/items/35a37e51c9435b2c968b)の記事を参考に開発者アカウントの取得、開発者インスタンスの作成を行います。バージョンはMadrid(2020/5/30更新: Orlandバージョンでも検証しました。)を選択しました。**10日間活動がない場合、開発者インスタンスは消去されてしまいますのでご注意下さい。**

## 2. 開発者インスタンスの各種設定
### 2-1. 開発者インスタンスの言語設定
[こちら](https://qiita.com/Kisaragi13/items/abbc205134d1696ff644)の記事を参考に開発者インスタンスへの日本語プラグインのインストール、言語設定を行います。プラグインのインストールには１時間ほど掛かります。

### 2-2. 開発者インスタンスのタイムゾーン設定
[こちら](https://qiita.com/Kisaragi13/items/176a222f7d1b9b987b3e)の記事を参考に開発者インスタンスの”Asia/Tokyo”タイムゾーン追加、設定を行います。**タイムゾーンは後に紹介するMIDサーバと合っていないと後々つまづくのでご注意下さい。**

### 2-3. デモデータの削除
[開発者インスタンス管理](https://developer.servicenow.com/app.do#!/instance)から"Action"の中の"Remove demo data"を選択し、事前定義されているデモデータを削除します。20-30分ほど掛かります。
<img width="1420" alt="スクリーンショット 2019-12-09 21.58.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/b200bb45-7916-d94b-611c-b15d776a883a.png">

## 3. MIDサーバ作成
MIDサーバーは、ServiceNowプラットフォームと外部のアプリケーション、データソース、サービスの間で行われるデータ通信を支援します。MIDサーバは設備内部ネットワークに存在し、ServiceNowインスタンスとの全ての通信を開始します。今回はNutanixのHCIプラットフォーム上にLinuxベースのMIDサーバを立ち上げます。

[MIDサーバの紹介](https://docs.servicenow.com/bundle/madrid-servicenow-platform/page/product/mid-server/concept/c_MIDServer.html)

### 3-1. ServiceNowでMIDサーバユーザの作成
ナビゲーションペインで”ユーザ”を検索し、”システム・セキュリティ”配下の”ユーザ”を指定します。
<img width="1428" alt="スクリーンショット 2019-12-09 21.59.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/9da29104-a9eb-2759-e031-9dabd2d05e4c.png">

”新規”ボタンから新規ユーザ作成画面に移動し、miduserユーザを作成します。
<img width="1428" alt="スクリーンショット 2019-12-09 22.00.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/e230c45a-2e0f-e50b-0e61-70d0bbb5a1a5.png">

ユーザ設定画面下部の”ロール”の”編集”を指定し、"mid_server"を付与し、保存します。
<img width="1428" alt="スクリーンショット 2019-12-09 22.02.03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/2a0294af-656b-713c-f376-ecac80a5097a.png">

”更新”を指定し、ユーザ設定を保存します。
<img width="1428" alt="スクリーンショット 2019-12-09 22.24.04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/1cf149a2-b125-da06-edf8-97ce5509dbaa.png">

### 3-2. Prism CentralからMIDサーバの起動
Prism Centralのコンソールから仮想マシンの起動を行います。今回はvCPU:2, メモリ: 8GB, ディスク: 40GBのスペックでCentOS7.4ベースの仮想マシンを起動しました。

MIDサーバの詳しい要件についてはServiceNow社公開の情報を参考にしてください。
[システム要件](https://docs.servicenow.com/bundle/madrid-servicenow-platform/page/product/mid-server/reference/r_MIDServerSystemRequirements.html#r_MIDServerSystemRequirements)
[ネットワーク要件](https://docs.servicenow.com/bundle/madrid-servicenow-platform/page/product/mid-server/concept/c_MIDServerConnectionPrerequisites.html#t_ConfigMIDSvrConnecPrereq)

### 3-3. MIDサーバ設定
MIDサーバで以下をroot権限で実行します。以下例ではmidserver名を"midserver"とした場合の手順を記載しましたが、自由に設定可能です。**タイムゾーンはServiceNowインスタンスと合っていないと後々つまづくのでご注意下さい。**

```shell
yum update -y
yum install unzip vim wget glibc.i686 -y
echo "midserver" > /etc/hostname
hostname midserver
timedatectl
timedatectl set-timezone Asia/Tokyo
mkdir -p /servicenow/midserver/
```
ここでServiceNowインスタンスの”MIDサーバー”配下の”ダウンロード”メニューに移動し、Linux 64bit用のパッケージをダウンロードします。ダウンロードしたパッケージをMIDサーバーの/servicenow/midserver/配下に格納します。(ダウンロード元のURLが分かればMIDサーバーから直接wgetしても良いです。)
<img width="1428" alt="スクリーンショット 2019-12-09 22.45.36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/fc328490-66a3-08e8-f098-019b82674aba.png">

```shell
cd /servicenow/midserver/
unzip mid.madrid-12-18-2018__patch7a-10-01-2019_10-03-2019_1530.linux.x86-64.zip
rm mid.madrid-12-18-2018__patch7a-10-01-2019_10-03-2019_1530.linux.x86-64.zip
cd /servicenow/midserver/agent
vim config.xml

<parameter name="url" value="https://YOUR_INSTANCE.service-now.com/"/>
--> 自分のServiceNowインスタンスのURLを入力します
<parameter name="mid.instance.username" value="YOUR_INSTANCE_USER_NAME_HERE"/>
--> 3-1でServiceNowに作成したmiduserのユーザ名を入力します
<parameter secure="true" name="mid.instance.password" value="YOUR_INSTANCE_PASSWORD_HERE"/>
--> 3-1でServiceNowに作成したmiduserのパスワードを入力します
<parameter name="name" value="YOUR_MIDSERVER_NAME_GOES_HERE"/>
--> midserverのホスト名を入力します
```

### 3-4. MIDサーバ起動
```shell
cd /servicenow/midserver/agent
./start.sh
./bin/mid.sh install
```

## 4. MIDサーバ確認
ServiceNowインスタンスにおいてMIDサーバの起動確認を行います。

### 4-1. MIDサーバのステータス確認
ナビゲーションペインで"MIDサーバー”を検索し、”MIDサーバー”配下の”サーバー”メニューへ移動します。設定したMIDサーバーが見えており、ステータスが"Up"であることを確認します。
<img width="1428" alt="スクリーンショット 2019-12-09 22.45.43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/3730bf9a-16cc-1f6f-f409-92234479ddd2.png">

### 4-2. MIDサーバ検証
MIDサーバーを選択後、下部の”検証”メニューをクリックすると以下画面が出てきます。”Save”を押しMIDサーバの検証を開始します。
<img width="1428" alt="スクリーンショット 2019-12-09 22.47.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/a622af75-db9e-e33c-210f-31b7fe4f0225.png">

”検証済み”のステータスが”はい”になればMIDサーバの起動確認が完了です。検証済みとならない際は”リキー”を行って下さい。
<img width="1428" alt="スクリーンショット 2019-12-09 23.01.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/3cfb39e1-8cc6-65f7-8b5b-af1466c1396a.png">



## 5. まとめ
今回はServiceNowとNutanixの統合 その1として両社ソリューション連携のための準備作業を行いました。次回から具体的なユースケースの実装をしていきます。

## 6. 参考(備忘録)
- MIDサーバ
[英語版の解説動画もあります](https://www.youtube.com/watch?v=bQAaOmi4SA8)

- アラート連携
[Nutanixイベントルール定義](http://download.nutanix.com/solutions/Nutanix+Event+Rule+Creation.xml)
[Mac一括設定クライアント](http://download.nutanix.com/solutions/Nutanix_Playbook_Automation_Mac_v1.0.zip) 
[Windows一括設定クライアント](http://download.nutanix.com/solutions/Nutanix_Playbook_Automation_Windows_v1.0.zip)

- Nutanix Calm連携
[Nutanix Calm ServiceNow Plugin](https://store.servicenow.com/sn_appstore_store.do#!/store/application/3b7631654f452b001200e5201310c76b/1.3.1?sl=cs&iid=21b9db42db30ebc0cbf6d5b0cf961931)

- CMDB連携
[ServiceNow社資料](https://docs.servicenow.com/bundle/madrid-it-operations-management/page/product/service-mapping/reference/nutanix-pattern.html)