vSphere Cloud Pluginを使って個人クラウドを効率利用

Jenkins Advent Calendar 2011 11日目担当のwadatkaです。
id:masato-kaさんの「お仕置き系eXtreamFeedbackDeviceの開発」からのバトンを受けての記事です。


Jenkins実践入門」発売日からちょうど一ヶ月経ったこの日が担当になって何か感慨深いです。

ただ、今回は「Jenkins 実践入門」の内容とか関係なく自分がほしいなぁと思っていた機能がプラグインとして出ていたのでそれを紹介しようと思います。

紹介するプラグインは、「vSphere Cloud Plugin」です。

このプラグインは、VMware vSphere server上の仮想マシンを起動したり停止したりスナップショットに戻したりできるプラグインです。
自宅でESXiの入ったマシンを動かしているので、それ上のVMをいろいろコントロールできたらいいなと思っていたところに、このプラグインを見つけたので、助かりました。

このまま見つけられずにいたら、きっと、「VMware vShere CLI」とかインストールしてコマンドとかでジョブを作っていたことだと思います。

もともと「Lab Manager Plugin」があったのですが、「Lab Manager」は有料(試用期間はありますが。)なので、環境も作っていませんでした。


ということで、ここからは「「無料」」でESXi上の仮想マシンをJenkinsから管理する設定などを説明します。


1.環境
実際に動かしている環境はこのような感じです。

物理マシンには、ESXi 5.0をインストールしています。
Jenkinsは、Windows Server 2003がインストールされたVM上に構築しています。
その他のVMは、Windows XPやCent OSなど適当なVMがいくつか作成されています。

今回は、「vSphere Cloud Plugin」を使ってJenkinsからWindows XPVMを起動→ジョブの実行→停止を行ったりします。
Windows XPVMは、予めJenkins Slaveが起動できる設定を行っているもとします。設定方法は、「Jenkins実践入門」の「10.2.3 マスターとスレーブの4つの設定方法」を参考にしてください。

vSphere Cloud Plugin」は、「Jenkinsの管理」→「プラグインの管理」から探してイストールしてください。


2.vSphere Hostの設定
まず始めに、VMware vSphere Server のホストをJenkinsに設定します。

「Jenkinsの管理」→「システムの設定」にアクセスすると「クラウド」項目があります。
追加するときは、「追加」から「vSphere Cloud」を選択します。
ここに「vSphere Host」やアクセス情報を設定します。

「Max number of slaves online」は、このホスト上に起動できるスレーブの上限値を設定でき、「0」にすると無限になります。


3.Slaveの設定
vSphere Hostの設定が終わったら、設定したホスト上のVMをSlaveとして登録します。
「Jenkinsの管理」→「ノードの管理」→「新規ノード作成」で「Slave virtual computer running under vSphere Cloud」を選択してSlaveノードを作成します。

続く設定画面では、必要な情報を設定してください。

設定のポイント

  • 「Snapshot Name」:スナップショットを使用する場合は、スナップショット名を設定します。
  • 「Force VM Launch」:VMの電源がオフのとき、オンにしてSlaveとして接続します。
  • 「Availability」:必要に応じてVMをオン/オフとする場合は、「要求時にはオンラインにし、待機中にはオフラインにする」を選択します。オンライン/オフラインをすぐに切り替えたいので、それぞれ要求時の遅延時間:0、待機時の遅延時間:1(最小値:1)としています。
  • 「What to do when the slave is disconnected」:Slaveがオフラインになったときなど、節電させた際のVMの動作を設定します。「Shutdown」以外には、「Shutdown and Revert」「Suspend」「Reset」「Nothing」があります。

※Slaveの基本的な設定については、「Jenkins実践入門」の「10.2.4 スレーブサーバとしてWindowsを利用する」や「10.2.5 スレーブサーバとしてLinuxを利用する」を参考にしてください。

これで、Slaveの設定は完了です。


4.ジョブの実行
ジョブの設定は、通常のSlave上で実行させる設定を行います。

ジョブを実行すると、スレーブがオフラインなので、ビルドキューにとどまったままです。

しかし、ノードを確認するとVMの起動が開始されます。

正常に開始されるとビルドが実行されます。

ビルド完了後、他にビルドキューがないので、シャットダウンを行います。


5.まとめ
今回、この「vSphere Cloud Plugin」を使ってVMの起動や停止を行う設定を紹介しました。


この機能を使うと何がうれしいのか。

  • 限られたリソースの中で様々な環境でビルドやテストを実行できる。リソースが余るほど多くあるのならば、Slave用のマシンは起動しっぱなしにすることができます。しかし、マシンが1台しか用意できないなど、テスト環境は5個、10個あるときなどは、必要なときに必要なマシンだけ起動して完了したら停止する機能はきっと重宝されますよ。
  • 今回、紹介していないのですが、スナップショットを指定することもできるため、ビルドやテストの実施後に初期状態へ簡単に復元することができるようになりますよ。


さて、明日のJenkins Advent Calendarは、ooharabucyouさんです。よろしくお願いします。