show log include yuh

勉強したことの復習を兼ねて、IT関係(ネットワーク/サーバ/アプリケーション)についてまとめてます。たまに趣味のこと

スポンサーリンク

ESXiのVMをCLIを用いて大量生産する

概要

ESXを使っていて同じ大量にVMを作るとき、GUIでポチポチするのは数台なら大丈夫ですが、何十台とあるときはさすがにやりたくありません。
ESXではSSHでログインすることでCLIコマンドを使うことができます。
このコマンドを用いてスクリプトを書くことで任意の数のVMを作成することができます。

スクリプトの概要

まずはスクリプトの内容から公開します。
org_fileにコピーするファイルを指定して、numnerに複製する数を指定することでVMを複製することができます。

sh make_vm.sh

##Original_VM_File
org_file=/vmfs/volumes/org
##VM_Number
number=4

for i in `seq $number`
do
     echo "Start Time"
     date
     echo "Clone"
     cp -R $org_file /vmfs/volumes/copy_$i
     vm_id=$(vim-cmd solo/registervm /vmfs/volumes/copy_$i)
     echo $vm_id
     vim-cmd vmsvc/power.on $vm_id &
     echo "Sleep"
     sleep 60
     vim-cmd vmsvc/message $vm_id _vmx1 2
     echo "End Time"
     date
     echo $i VM Finish
done

VM のファイルをコピーする

cp -R $org_file /vmfs/volumes/copy_$i

VMについているユニークなIDを取得します(あとで使います)

vm_id=$(vim-cmd solo/registervm /vmfs/volumes/copy_$i)

作成したVMを起動する

vim-cmd vmsvc/power.on $vm_id &
※先ほど指定したVMのIDを用いてVMを起動する、&をつけることで処理が進まない場合も並列で処理を続けることができます。

スリープ

sleep 60
VMが起動してからVMにメッセージを送るため、60秒待つようにします。

起動したVMにメッセージを送信する

vim-cmd vmsvc/message $vm_id _vmx1 2
※コピーしたVMを起動するとコピーか移動したことに対してメッセージを送る必要があるため、2のコピーしたことであるメッセージをCUIで送ります。

まとめ

ESXのコマンドは意外と使うのが簡単で、シェルスクリプトにするのは簡単にすることができました。
ちなみに16GBのVMをコピーするのに大体10分ほどかかっていました、cpではなく他のコマンドを使えばもっとはやくコピーすることができるかもしれません。