VMWare ESXiでVMを大量にコピーする

VMWare ESXi5.5上で動いているVMを大量に複製する必要が生じた。
vSphere clientで手動でコピーできるのだが、
大量にコピーするのは非常に時間がかかるので、
シェルでバッチ処理をかけて帰りたいなと思って調べた。

ESXiはsshでログインして作業することが可能である。
黄色と黒のコンソール画面からsshをONにして、
vSphereで接続するのと同じIPアドレスに、同じアカウントでログイン。

vmは /vmfs/volumes/datastore1 に格納されている。
この中に以下のようなシェルスクリプトを書いてコピーした。
コピー元がubuntu-01というvmで、ubuntu-02からubuntu-09までを複製する。

FILE=ubuntu-01

for i in `seq 2 9`
do
  mkdir "ubuntu-0$i"  
  cp ubuntu-01/${FILE}.vmx ubuntu-0$i/
  cp ubuntu-01/${FILE}.vmsd ubuntu-0$i/
  cp ubuntu-01/${FILE}.vmxf ubuntu-0$i/
  vmkfstools -i ubuntu-01/${FILE}.vmdk -d thin ubuntu-0$i/
done

複製が終わるとvSphereで確認できるので、データストアでファイルを表示して、
vmxファイルを右クリック -> デプロイすればいい。

Written on June 9, 2014