概要
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
ではなく他のコマンドを使えばもっとはやくコピーすることができるかもしれません。