CloudStackerから見た、NutanixのSelf-Service Portalについて

この記事は、Nutanix Advent Calendar 2016の12月25日分として作成しました。

2016年12月22日（日本時間の23日）にNutanixの最新メジャーバージョンである5.0がリリースされました。

このバージョンでは60以上もの改善や新機能追加行われましたが、特に目新しいものとして、AHV(Acropolis Hypervisor)向けのSelf-Service Portal(SSP)が利用可能となりました。従来はNutanix AHV(Acropolis Hypervisor)上でセルフサービスポータル機能を実現するためにはOpenStackと連携する必要がありましたが、どのように棲み分け・使い分けができるのでしょうか。

このエントリでは、Nutanixが提供するSelf-Service Portal(SSP)について、クラウド基盤ソフトウェアに携わっていた視点から紹介します。
(※今回はいつも以上に個人の見解が入っておりますのであらかじめご了承ください）

# 「プライベートクラウドを作りたい」という要望
この要望はここ数年非常に多いのですが、その言葉が指す実際としては、ごく普通のサーバー仮想化環境であったり、クラウド基盤ソフトウェアを使ってIaaS環境を作る形であったり、まちまちです。

プライベートなIaaSを作れるクラウド基盤ソフトウェアにも様々なものがありますが、私は前職のCitrix時代から日本CloudStackユーザー会のメンバーとして活動してきました。最も活発に活動していた頃は、オープンソースのものだけでもCloudStack, OpenStack, Eucalyptus, OpenNebulaなど、商用ならvCloud DirectorやAzure Packなど多数のツールがひしめき合って、大変盛り上がっていました。

ツールは色々あれど、基本的にはいずれもHypervisorに被せて、IaaS基盤用途に適した形でコントロールするオーケストレーションツールです。

## クラウド基盤ソフトウェアを使うべき場面
クラウド基盤ソフトウェアを使用した場合と、普通の仮想化基盤の違いとして、クラウド基盤ソフトウェアは以下のような特性を備えています。
- セルフサービス性
    - ハードウェアやハイパーバイザーの管理権限がなくても使える
    - 仮想マシンのデプロイ、設定、電源管理、削除等の操作ができる
    - 仮想ネットワークのデプロイ、設定、削除等の操作ができる
- 利用者間の隔離性
    - 利用者間の仮想ネットワークを自動、または管理者による設定で分割できること
    - ある利用者が作成したVM等を、他の利用者が勝手に見たり操作したりできないこと
    - IaaS管理者によるリソースのプーリングと、利用者ごとの提供上限制御ができること（VM数・CPU・RAM・ディスク・IPアドレス数など）

このような特性を踏まえてシンプルに言い表すと、クラウド基盤ソフトウェアは仮想化環境をIaaS基盤化するためのツールであると言えます。

## クラウド基盤ソフトウェアが本当に必要か、見直すべき場面
これらの機能が特に必要ない状況であれば、クラウド基盤ソフトウェアを被せることなく、Hypervisorをそのまま使用した方が幸せになれると考えています。

たとえばこんなケースです。
- Hypervisorを操作するのがIT部門だけ
- どのVMも同じ仮想ネットワークに接続する

なぜこれらのケースではクラウド基盤ソフトウェアを使うべきでないかというと、以下のような考慮事項があるためです。

### クラウド基盤ソフトウェアを被せることによる機能制限
クラウド基盤ソフトウェアは、良くも悪くもそのソフトウェアが提供するフレームワークに基づいてインフラを管理することになります。Hypervisor環境を素のまま使っている時のように「なんでも自由に」「細かく設定」することはできません。また、Hypervisor側をみだりに直接操作すると、クラウド基盤ソフトウェアが持っている管理情報との不整合が起きて問題となるケースもあります。

### クラウド基盤ソフトウェア自体の構築・管理コスト
オープンソースのクラウド基盤ソフトウェアをサポートなしで使っていれば当然無償ですが、ビジネス環境においては多くの場合、サポートのある商用版、あるいは3rd partyによる有償サポートが利用されています。これによって通常の仮想化基盤に比べると追加コストが発生することになります。

また、設計・構築にあたっては管理サーバー、データベース、その他のモジュールに対するパラメーター設計や可用性管理を行う必要がありますし、セキュリティアップデート等を含んだ最新バージョンを適用していくなどの管理が必要となります。

クラウド基盤ソフトウェアを導入することで、個々のサーバー管理をユーザー部門が行うようになったとしても、クラウド基盤自体の管理をする必要があるというのは、プライベートクラウドにおいては決して無視できない点です。

# NutanixのSelf-Service Portalについて
では続いて、NutanixのSSPはどのような特徴があり、クラウド基盤ソフトウェアとどのように違うのかを解説します。

## 構築が極めて簡単
SSPの構築は極めて簡単です。というより、NutanixのSSPはNutanixのCVMの中にはじめから組み込まれた形で提供されますので、構築作業そのものがありません。ソフトウェアの更新もCVM(AOS)の更新とイコールですので、NutanixのOne-click Upgradeによって無停止で簡単に行うことができます。

### システム要件
- 対応するハイパーバイザーはAHVのみ
- 1つのSSPによる管理範囲は1つのNutanixクラスタ
- Active Directoryへの接続（SSPユーザーの認証用）

### 初期設定
Nutanixの管理に元々使用されているCVMに組み込まれていますので、管理サーバーを立てたりする必要はありません。
初期設定としては、Prismに管理者としてログインし、SSPを表示してADへの接続を行うだけです。

### 参考文献
Self-Service Portal Administration Guide（要ログイン）
https://portal.nutanix.com/#/page/docs/details?targetId=SSP-Admin-Guide-v1-0:SSP-Admin-Guide-v1-0
Self-Service Portal User Guide（要ログイン）
https://portal.nutanix.com/#/page/docs/details?targetId=SSP-User-Guide-v1-0:SSP-User-Guide-v1-0

## できること
クラウド基盤ソフトウェアやSelf-Service Portalの機能を理解するには、基盤を管理する側としての視点と、ユーザーとしての視点で何ができるのかを把握する必要がありますので、それぞれ整理して記述します。

### 管理者の視点で
SSP管理者は、IaaSの提供者にあたると考えてください。
Prismの管理者とは別です。SSP管理者がすべきことは以下のとおりです。

#### Projectの作成
「Project」という管理単位を作ってSSPのユーザーやリソースを管理します。
- UserやGroupの登録
ドメインのユーザー名やグループ名を入力します。ここで入力したユーザーは、Quota（リソース上限）を共有しますが、個々のVMの操作はVMのOwnerのみが行えます。
- Role（役割）の選択
詳細は後述します。
- 使用可能なネットワークの選択
Project内のVMが接続可能なNetwork(VLAN)を選択します。ここで選択できるNetworkは、Prismの管理者があらかじめ作成済みのものに限られます。
- Quota（リソース上限）の設定
Project単位で共有するリソース上限です。vCPU数、ストレージ容量、メモリ容量に対して設定可能です。

![CreateProject.PNG](https://qiita-image-store.s3.amazonaws.com/0/76398/76411532-a2d4-ea34-271e-a24b6d4ee260.png)

#### Roleの定義
VMに対して実行可能な操作をセットにした「Role」（＝役割）を管理します。
作成したRoleはProjectに対して割り当てます。
個々のユーザーに対する割り当てではないため、同一Projectに参加したユーザーは、
そのProject内で同一権限を持ちますので注意してください。

![CreateRole.PNG](https://qiita-image-store.s3.amazonaws.com/0/76398/b41c9cab-4110-c766-dd3e-f4aa1b95ccac.png)

#### VMのTemplate化 
VMをTemplate化してCatalogに登録します。
TemplateはすべてのProjectから共通で使用されます。
![AddToCatalog.PNG](https://qiita-image-store.s3.amazonaws.com/0/76398/78e5c44b-8f0f-ea4b-4da8-6bdd35b0ebcf.png)

### ユーザーの視点で
ユーザーができることは極めてシンプルで、VMの作成と、自分がオーナーであるVMの操作のみです。

#### VM作成元の選択
![CreateVM1.PNG](https://qiita-image-store.s3.amazonaws.com/0/76398/6ecc0d54-740b-7b27-d131-602e86a1e1af.png)
#### Templateの選択
![CreateVM2.PNG](https://qiita-image-store.s3.amazonaws.com/0/76398/c4c65d6c-0f13-3c7e-b27e-8852bf3ca5f2.png)
#### 展開設定
展開先のProject・起動ディスク・ネットワークの選択、およびCPU・RAMサイズの指定が可能です。
![CreateVM3.PNG](https://qiita-image-store.s3.amazonaws.com/0/76398/44ffaad1-3f53-09ab-cdf3-d75fdda418e7.png)
#### 自身がOwnerであるVMの管理
電源操作、コンソール操作、情報のモニタリングが可能です。
実際に操作できる項目はRoleによって異なります。
![AdminVM.PNG](https://qiita-image-store.s3.amazonaws.com/0/76398/1e99e527-1736-c634-4044-11bd5f69cd3a.png)

## NutanixのSSPではできないこと
ここまで、SSPでどのようなことができるかを紹介しました。機能としては極めてシンプルであるものの、Projectごとのネットワーク割り当てやリソースのQuota、VMにOwner情報が付加されることにより、基本的なマルチテナント性が確保できています。

また、ハードウェア管理やストレージ管理など、通常のPrismで行うような基盤部分がSSPならば見えないため、勝手な設定変更などのリスクを回避しながら、ちょっとしたプライベートクラウドが手に入るということがお分かり頂けたと思います。では逆に、どのような点がクラウド基盤ソフトウェアとは異なるのかについても触れておきたいと思います。

### 特に違いを感じたのはネットワーク周り
NutanixのSSPとクラウド基盤ソフトウェアの違いを挙げればきりがありませんが、特に違いを感じたポイントを挙げると、ネットワーク周りの考え方です。

NutanixのSSPは、管理者がProjectに仮想ネットワークを明示的・固定的にアサインしますが、クラウド基盤ソフトウェアでは利用者がオンデマンドで仮想ネットワークをデプロイする機能を持っているのが一般的です。実装方法は多々ありますが、一例としては、あらかじめ多数のVLAN IDをプールしておいて、利用者が「仮想ネットワークを作成する」という操作をした段階で自動的にVLANをアサインするような動作が可能です。

また、その仮想ネットワークから外部にアクセスするためのルーティング機能についてもクラウド基盤ソフトウェア側で用意していたりします。NutanixのSSPはルーティング機能を持っていないので、管理者があらかじめ各VLAN用のルーターを用意しておく必要があります。
また、NFV機能もありませんので、ロードバランシングやFirewallも別途用意する必要がありますし、特にSSP上から連携する機能もありません。

この点を考えると、NutanixのSSPの現在の位置づけが、クラウド事業者がクラウドサービスを提供するためのものではなく、社内で使えるちょっとしたプライベートクラウド環境向きであることが読み取れるのではないかと思います。

# まとめ
今回はNutanixのSelf-Service Portalについて紹介してきました。繰り返しになりますが、現バージョンでのSSPはちょっとしたプライベートクラウド向けという感触です。
言い換えると本格的なIaaSというよりも「社内VPS」とイメージして頂けると分かりやすいと思います。

機能としてはまだまだ発展途上ですが、特別なセットアップは殆ど不要で使えて、運用の手間も掛からないというのは、クラウド基盤ソフトウェアを使用する場合と比べて非常に魅力的です。

普通の仮想化基盤と、クラウド基盤ソフトウェアの間を埋めるソリューションとして、期待して頂けますと幸いです。通常のPrismの操作や、SSP外で作成したVMとの干渉しませんし、おそらく次期バージョンのCommunity Editionに搭載される可能性のある機能なので、ぜひ多くの方に触れて頂ければ幸いです。

今後のCommunity Meetupや各種イベントではデモもご覧頂けますので、ぜひお声がけください！