VMware vSphere APIのPythonバインディングである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.」を表示されるので、適当なキーをクリックします。
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に接続すると以下のように見えます。
動作確認
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 :