はじめに
サーバー仮想化分野の代表的なプラットフォームの1つであるCitrix XenServerでは、他のサーバー仮想化製品同様に、スクリプティングを使った仮想環境の管理や運用の自動化が可能です。本連載ではXenServer環境をスクリプティングによって自動化するために必要とされる基礎知識について紹介します。
対象読者
- Citrix XenServer バージョン5.xをインストールしてホスト構築できる方
- 管理ツールXenCenterを使ったGUIベースの基本操作を知っている方
- Microsoft PowerShellの構文について初歩知識を持っている方
Citrix XenServerの特長
Citrix XenServerの特長は、無償で使用できるだけでなく、無償版そのままで大規模な環境を構築できる機能がすべて提供されているということです。無償版だからという理由で、プール構成やライブモーションなどの複数サーバーを前提とした機能が限定されるわけではありません。さらに、XenServerの運用管理に使えるAPIについても、範囲が限定されることなく提供されます。このため、無償版を入手すれば、スクリプティングによる自動化も可能になります。
オブジェクト指向アプリケーションとしてのXenServer
「Citrix XenServerと言えばXenハイパーバイザー」ですが、XenServer仮想環境の管理機能もやはりXenハイパーバイザーによって制御されているのでしょうか。
実は、XenServer管理機能の中核部分は、ハイパーバイザーとは別のオブジェクト指向アプリケーションによって制御されています。それは、マシン、ネットワークカード、ディスクなどのPC部品をオブジェクトとしてモデル化した、純粋な応用アプリケーションです。
XenServerでは、PC部品別にオブジェクト・モデル(クラス)を保有しています。各クラスには、個々の部品に性格を与えてインスタンス化するための属性や操作が事前定義されています。詳細は、「Class Relation Diagram」で確認(※注1)できます。
リンク先の画面右側に、PC部品に相当するさまざまなクラスが定義されており、各クラスのサブページを表示すると、プロパティ(フィールド)やメソッド(メッセージ)が用意されていることが分かります。
XenServerで仮想マシンを作成したり運用したりするのは、オブジェクト指向アプリケーションを通して部品イメージのオブジェクトをオンデマンドで組み立て、PCのリアルタイムBTOを仮想で実現しているようなものです。
XenServerが動作する仕組み
以上のように、XenServer実行中はオブジェクト・クラスのインスタンスが生成され、処理されます。それらの処理は、XenServer固有の命令によって制御されています。
このXenServer固有の命令体系のことを、XenServer APIまたはXenAPI(ゼンエーピーアイ)と呼びます。また、XenAPIの命令を受け取って解釈し、適切な機能へと仲介しているのは、XenServerの管理用ドメイン(Dom0)で動作しているXAPI(ザピ)と呼ばれるデーモン(サービス)です(別名Toolstack(ツールスタック)とも呼ばれます)。
XenServer環境のすべての動作がXenAPI命令をXAPIデーモンに渡すことによって制御されているということは、独自に開発したスクリプトやアプリケーションからXenAPI命令を呼び出してXAPIデーモンに渡すことさえできれば、XenServerの管理や運用を自動化できるのではないでしょうか。
そのような要望を満たすためのツールが、XenServer製品リリースとともに公開されている「XenServer SDK」です。