hidemium's blog

日々学んだことをアウトプットする。

vCenterの開発環境としてVCSIMを構築する

VMware vSphere APIPythonバインディングであるpyvmomiを利用して、スクリプトから仮想マシンを操作することができます。しかし、pyvmomiのスクリプトを開発するため、vCenterの開発環境を用意する必要がありますが、構築には手間がかかります。そこで、今回はvCenterをシミュレートするvCenter Server Simulator (VCSIM)を試してみました。
※VCSIMはVMwareの公式サポートは受けられないため自己責任となります。

構成

インストール

以下のリポジトリを参考に導入を行ったのですが、Packerを使って、vCSAのovaファイルからVagrantで使うVirtualBox用のboxの生成することが上手くできなかったので手動でインストールしています。

vCenter Server Applianceのインポート

VMware社のサイトからvCenter Server ApplianceのOVAファイル (VMware-vCenter-Server-Appliance-5.5.0.5100-1312297_OVF10.ova) をダウンロードします。

VirtualBoxを起動し、ファイル>仮想アプライアンスのインポートをクリックします。

上記のovaファイルを選択し、開くをクリックします。

次へをクリックします。

アプライアンスの設定にて、RAMを8192MBから4096MBに変更し、インポートをクリックします。

vCenter Server Applianceを選択し、起動をクリックします。

コンソール画面に「Press any key and proceed with booting.」を表示されるので、適当なキーをクリックします。

起動が完了したことを確認し、DHCPで割り当てられたIPアドレスを確認します。

VCSIMの設定

起動したvCenter Serverにログインします。
※ID: root、PASS: vmware(vCSAのデフォルト設定)

gitコマンドをインストールします。

$ sudo zypper addrepo http://download.opensuse.org/repositories/devel:/tools:/scm/SLE_11_SP2/devel:tools:scm.repo
$ sudo zypper install git-core

以下のリポジトリを取得します。

$ git clone https://github.com/tehranian/vagrant-vcenter-simulator.git

以下のスクリプトを実行します。

$ cd vagrant-vcenter-simulator/scripts
$ chmod 700 vcenter-55-simulator-setup.sh
$ ./vcenter-55-simulator-setup.sh

VCSIMの構成は以下のファイルで指定しています。以下の構成では、クラスターが2個、クラスターごとにホストが8個、ホストごとにVMが8個の構成であるため、ホストが16個、VMが128個設定されることになります。

$ cat /etc/vmware-vpx/vcsim/model/initInventory-vagrant.cfg
<config>
  <inventory>
    <dc>1</dc>
    <host-per-dc>0</host-per-dc>
    <vm-per-host>0</vm-per-host>
    <poweron-vm-per-host>0</poweron-vm-per-host>
    <cluster-per-dc>2</cluster-per-dc>
    <host-per-cluster>8</host-per-cluster>
    <rp-per-cluster>8</rp-per-cluster>
    <vm-per-rp>8</vm-per-rp>
    <poweron-vm-per-rp>6</poweron-vm-per-rp>
    <dv-portgroups>0</dv-portgroups>
  </inventory>
  <worker-threads>2</worker-threads>
  <synchronous>true</synchronous>
</config>

vSphere Web ClientからVCSIMに接続すると以下のように見えます。

f:id:hidemium:20150510142235p:plain

動作確認

pyvmomiを使って、VCSIMに接続できるか確認してみます。pyvmomi community samplesを使えるDockerfileがあったため、こちらを利用します。

Dockerをインストール済みのUbuntuサーバにログインし、以下のようにDockerfileをビルドします。

$ git clone https://github.com/ozzyjohnson/docker-pyvmomi.git
$ cd docker-pyvmomi
$ sudo docker  build -t debian-pyvmomi .

以下のようにコンテナを起動します。

$ sudo docker run -t -i debian-pyvmomi /bin/bash

pyvmomi community samplesディレクトリに移動し、サンプルスクリプトを実行します。

# cd /pyvmomi-community-samples/samples
# python hello_world_vcenter.py -s <VCSIMのIPアドレス> -u root -p vmware
Hello World!

If you got here, you authenticted into vCenter.
The server is 192.168.xxx.xxx!
current session id: 5216d94f-21bc-9e49-1ce9-d6bcece2c165
Well done!


Download, learn and contribute back:
https://github.com/vmware/pyvmomi-community-samples

こちらはvCenter配下の全VMを確認しています。

# python getallvms.py -s <VCSIMのIPアドレス> -u root -p vmware
Name       :  DC0_C0_RP0_VM2
Path       :  [GlobalDS_0] DC0_C0_RP0_VM2/DC0_C0_RP0_VM2.vmx
Guest      :  Microsoft Windows Server 2003 Standard (32-bit)
Instance UUID :  5038f77b-ce04-6ca9-e481-89958a8ce3eb
Bios UUID     :  42381903-f65d-d3c4-9d9b-d7c3b25fefd3
State      :  poweredOn
:

おわりに

どこまで利用できるか確認中ですが、仮想マシンやデータストアを確認する参照系のスクリプトであれば問題はなさそうです。また、メトリクスの設定もできるようなので今後試してみたいと思います。なお、今回はVCSIMをPCで動作させている関係で、メモリを4GBまでしか割り当てができなかったため、vSphere Web Clientへの接続は不安定でした。