ServiceNowとNutanixの連携 その4 Calm連携後編【ServiceNow Parisバージョン対応】

本記事は[Nutanix Advent Calendar 2019 #4](https://adventar.org/calendars/4475) 12/17 分の記事です。そして[前回記事](https://qiita.com/shocnt/items/eaf44807d4776ab3e63c)の続きです。

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

# 本記事(その4)では
その1でご紹介した3つのユースケースのうち2つ目、「ServiceNowのリクエスト管理とCalmプラグインによるNutanixへのアプリケーションデプロイ」について実装方法の後半をご紹介します。ServiceNowでカタログを公開し、ユーザへとセルフサービス提供します。

# 利用イメージ(おさらい)
管理者がServiceNowのカタログとしてCalmのブループリントを公開し、ユーザがオンデマンド、セルフサービスで消費出来るサービス提供形態を目指します。
<img width="1025" alt="スクリーンショット 2019-12-12 14.27.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/72a8bbe8-fa28-668c-78df-d4cd6242b14e.png">

# 手順
## 1. Calmユーザの設定
### 1-1. Calm Adminの設定
Calmプラグインのインストール時、x_nuta2_nutanix_ca.calm_admin(Calm Admin)とx_nuta2_nutanix_ca.user(Calm User)というロールがServiceNowにインストールされます。それぞれの役割と権限は以下となります。

|ServiceNowロール    　　　                   |権限                |
|:-----------------------------------------:|:-----------------:|
|x_nuta2_nutanix_ca.calm_admin<br>（Calm Admin）  |プラグイン設定<br>ランタイム変数設定<br>ServiceNowとCalmリソース同期<br>カタログアイテムの作成<br>ユーザ、グループの割当|
|x_nuta2_nutanix_ca.user<br>(Calm User)         |カタログアイテムの起動<br>アプリケーションにおけるアクション起動<br>ログ確認|
|mid_server                                 |MIDサーバの管理|
|catalog                                    |ServiceNow UIにおけるカタログアイテムの確認と起動|

ここではSystem AdministratorからCalm Adminの設定を行います。ナビゲーションペインで”ユーザ”を検索し、”システム・セキュリティ”配下の”ユーザ”を指定します。

<img width="1425" alt="スクリーンショット 2019-12-12 0.01.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/342fb4ab-8c07-7456-b400-0028475c8e55.png">

Calm Adminとしたいユーザ、あるいはグループをクリック、設定画面下部の”ロール”の”編集”を指定します。"x_nuta2_nutanix_ca.calm_admin"、"mid_server"、"x_nuta2_nutanix_ca.user"、"catalog"を付与し、保存します。

**その3でAD連携をせず、ServiceNowのローカルグループをCalm Adminにしたい場合は、"Calm Admin"グループに必要な権限を付与します。**
<img width="1440" alt="スクリーンショット 2020-06-02 22.27.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/d912749d-269e-0a13-6d50-b581825662f4.png">

### 1-2. Calm Userの設定
**その3でAD連携していない場合のみ本手順を実施して下さい。**

Calm Userとしたいグループ、その3で作成した"Calm User"グループの設定画面下部の”ロール”の”編集”を指定します。"x_nuta2_nutanix_ca.user"、"catalog"を付与し、保存します。
![スクリーンショット 2021-03-10 21.18.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/ba456b35-923b-ae17-0366-5e23e077be4c.png)

## 2. カタログアイテムの公開
[前回記事](https://qiita.com/shocnt/items/eaf44807d4776ab3e63c)の6-2でブループリント、マーケットプレイスアイテム等のCalmリソースがServiceNow上に同期されました。これらのITサービスを実際にユーザにセルフサービスで使用してもらうには、ServiceNow上でカタログアイテムとして公開する必要があります。

**用語解説**
ブループリント: Calm上で開発されたが、マーケットプレイスに公開されていないブループリント
マーケットプレイスアイテム: Calm上で開発され、マーケットプレイスに公開されたブループリント

Calm Adminユーザで操作を行います。ユーザ名をクリックし、"代理操作ユーザ"をクリックします。ユーザ検索画面が出てきますので、前章でCalm Adminに指定したユーザを選択します。
<img width="1435" alt="スクリーンショット 2019-12-12 16.19.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/6f331fa5-314f-597a-6b37-7e50fa4eae8f.png">

ナビゲーションペインで"Nutanix"を検索し、"Catalog Items"メニューから"新規"をクリックします。
<img width="1435" alt="スクリーンショット 2019-12-12 16.22.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/b5424d95-2c7b-1533-c656-52cbd3d59448.png">

カタログの設定画面で以下を選択し、"オプションを選択"をクリックします。
プロジェクト管理: ブループリントやマーケットプレイスアイテムが属するCalmのプロジェクトを選択
Select Type of Blueprint to Configure: ブループリント(Unpublished)、もしくはマーケットプレイスアイテム(Published)を選択
Blueprint: ブループリント名あるいはマーケットプレイスアイテム名を選択
Application Profile: ブループリントあるいはマーケットプレイスアイテムに定義されたアプリケーションプロファイルを選択
<img width="1428" alt="スクリーンショット 2019-12-12 17.09.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/9472a126-7176-bea1-0b79-0199f7eb561f.png">

カタログの設定画面に遷移します。以下タブでカタログの詳細を設定します。"Runtime"のチェックボックスを有効にすることでCalm Userがカタログからアプリケーションを起動する際、該当する値を自由に入力させることが可能です。
Variablesタブ: アプリケーションのデプロイ時に用いる変数を定義します。
Service Configuratioタブ: アプリケーションを担う仮想マシン、コンテナの設定を行います。
Credentialsタブ: アプリケーションの各種認証情報を入力します。
<img width="1428" alt="スクリーンショット 2019-12-12 20.43.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/91ce6ba6-e4e9-78a1-e17a-e96e26628905.png">

最後に"General Settings"タブでカタログアイテム名、公開先のユーザ、グループを指定し、"チェックアウト"をクリックします。
<img width="1428" alt="スクリーンショット 2019-12-12 20.47.03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/e502a7e3-d8e7-cde7-c82a-a4c9a887b439.png">

"Catalog Items"メニューにて正常にカタログアイテムが公開されていることを確認します。
<img width="1428" alt="スクリーンショット 2019-12-12 21.27.06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/400dfed1-97d8-cb06-f303-860fec67ce4f.png">

## 3. カタログアイテムの起動
前章で公開されたカタログアイテムをCalm Userから利用し、Calmを用いてNutanixプラットフォーム上にアプリケーションのデプロイを行います。

Calm Userユーザで操作を行います。ユーザ名をクリックし、"代理操作ユーザ"をクリックします。ユーザ検索画面が出てきますので、Calm Userユーザを選択します。
<img width="1435" alt="スクリーンショット 2019-12-12 16.19.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/9a516b0d-dc8f-b5ec-fe07-853770feb1d1.png">

ナビゲーションペインで"Nutanix"を検索し、"Launch Blueprint"メニューで公開されたブループリントをクリックします。**Calm Userユーザの場合、Calm Pluginの設定は出来ないことをご確認頂けます。**
<img width="1428" alt="スクリーンショット 2019-12-12 21.43.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/247ecc22-a64f-d66c-a649-70e585f81438.png">

"Launch"をクリックします。
<img width="1428" alt="スクリーンショット 2019-12-12 21.50.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/17c13c24-79e4-b692-29b3-8496c5026a11.png">

"Name of the Application"に起動するアプリケーションの名前を入力、変数の値を入力して"注文する"をクリックします。
<img width="1428" alt="スクリーンショット 2019-12-12 21.52.40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/5fb4f3a2-bd5e-6edb-439f-c6ed381f7825.png">

"発注"メニューで注文したアイテムの状況を確認出来ます。アプリケーション起動中は"処理中の作業"、アプリケーション起動後は"完了してクローズ"となります。
<img width="1428" alt="スクリーンショット 2019-12-13 0.19.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/2f5c874f-d9c4-8ea7-9322-d0b3841b85fc.png">

Calmのアプリケーションを確認します。発注時に入力した名前でアプリケーション起動出来ていることが確認出来ます。
<img width="1428" alt="スクリーンショット 2019-12-13 0.21.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/6e26b55f-7efa-51cc-1d51-dd066ef0fd50.png">

ちなみにアプリケーション起動に失敗した場合は、状態が"未完了でクローズ"となります。また以下図のようにServiceNowインシデントが自動で作られ、チケットベースで解析を進める流れになります。
<img width="1428" alt="スクリーンショット 2019-12-13 0.23.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/bf874d6e-67f4-960c-83eb-ebc8d06fe83b.png">

## 4. アプリケーションからのアクション実行
前章でデプロイされたアプリケーションに定義されたアクションを実行します。例えばスケールアウト、パッチ適用、VM削除等の運用時に行うアクションをブループリントに組み込み、ServiceNowから起動します。ここではVM削除のアクションを行います。

ナビゲーションペインで"Nutanix"を検索し、"アプリケーション"に移動します。上で起動したアプリケーションが確認できます。
<img width="1428" alt="スクリーンショット 2019-12-13 0.34.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/8b1c4b81-b6e7-9dbd-313d-673b4017fdae.png">

該当アプリケーションをクリックし、下部に移動すると、Actionsタブにいくつかのアクションが定義されていることが確認できます。VM削除するために、Deleteの右の！マークをクリックします。
<img width="1428" alt="スクリーンショット 2019-12-13 0.34.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/b40ebaf7-3974-4e3b-e5d7-814e7e3b8503.png">

"レコードを開く"をクリックします。
<img width="1428" alt="スクリーンショット 2019-12-13 0.36.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/2c94b601-40b3-94a1-77e4-e1405906f596.png">

"Perform Action"をクリックします。
<img width="1428" alt="スクリーンショット 2019-12-13 0.36.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/0ac3ea99-45e3-1554-3287-8f6a167f0e42.png">

Stateがdeletingとなり、しばらく経つと消えます。
<img width="1428" alt="スクリーンショット 2019-12-13 0.38.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/74dec362-b761-028e-af33-b3c1c65a964c.png">

Calmのアプリケーション画面からも消えていることが確認出来ます。
<img width="1428" alt="スクリーンショット 2019-12-13 0.40.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/95c567fe-6f15-1139-b758-4084922bba66.png">

## 5. サービスポータルへのカタログアイテムの公開
プラグインバージョンv1.2よりServiceNowのサービスポータルにCalmブループリントのカタログアイテムが公開できるようになりました。その公開方法についても紹介します。

ナビゲーションペインで"サービスポータル"を検索し、”サービスポータル”配下の"ポータル"に移動する。テーブル内の"サービスポータル"をクリック。

<img width="1440" alt="スクリーンショット 2020-06-07 0.01.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/18788101-54fd-b497-052f-eb48e0a91c42.png">

ページ下部の”カタログ一覧”タブに移動し、"編集"ボタンをクリック。

<img width="1440" alt="スクリーンショット 2020-06-07 0.02.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/c935af92-85cb-0fda-5682-ae438f220c94.png">

"Nutanix Calm"のコレクションを右側のカタログ一覧リストに入れ、"保存をクリック"。

<img width="1440" alt="スクリーンショット 2020-06-07 0.02.27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/311f7d9c-342d-4b1c-2c97-2a9a929dff21.png">

戻ったサービスポータルページで"更新"をクリック。

<img width="1440" alt="スクリーンショット 2020-06-07 0.02.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/2cd7d2df-0671-13e5-26bf-0fda4dd8de7a.png">

https://(あなたのインスタンス番号).service-now.com/sp?id=sc_homeに移動するとサービスポータルにCalmのアイテムが表示されていることが確認できます。

<img width="1440" alt="スクリーンショット 2020-06-07 0.22.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/74196222-fa28-bdc3-047f-83afe4dcc22b.png">


## 6. まとめ
ServiceNowとNutanixの連携 その3として「ServiceNowのリクエスト管理とCalmプラグインによるNutanixへのアプリケーションデプロイ」のユースケースの実装方法後半をご紹介しました。ServiceNowのITサービス自動化とNutanix Calmのアプリケーションライフサイクル自動化を組み合わせることにより、ITaaS(IT運用のサービス化)の加速が可能となります。

次回はServiceNowとNutanixの連携 その5(最終回)として「ServiceNOW CMDBにおけるNutanixインフラの検知とモデリング」のユースケースの実装方法をご紹介します。