VMwarePlayer+Ubuntu/KVM/OVSでOpenFlowテスト環境をつくる(4)
ちょっとした Tips だけ。
こう、環境つくってVMたてていろいろやるって言うのができるのは良いのだけど、ある程度用意ができると、何が面倒だって VM 起動するのが面倒なのよ。vmware player で動かしている KVM Host + OF Controller Host は自動化の余地がないし、せいぜい2台だし、ここはまあいいとしよう。問題は、KVM Guest だよね。なんだかんだで4〜8台くらい KVM Guest 動かすとなると、いちいち virsh start
して VNC でつなぐか virsh console
して…っていうのを繰り返すのかと。面倒すぎる。
結局、GNU screen で KVM Guest ごとに terminal 開いて sudo virsh start ofvm01 && sudo virsh console ofvm01
やるっていう作業をしていたのだけど、面倒だから全部一発でいけるようにスクリプトを書いてみた。
#!/bin/sh USERID=`id -u` if [ $USERID -gt 0 ] then echo "You're not root" exit fi # boot all domains for DOMAIN in `virsh list --all | grep ofvm | grep off | cut -d' ' -f4` do echo "# boot $DOMAIN" virsh start $DOMAIN done # generate screenrc RC=".boot-kvm-domains-screenrc" cat << EOF > $RC sessionname bootkvmdomains escape ^t^t hardstatus on hardstatus alwayslastline hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %C%a " screen -t shell bash EOF for DOMAIN in `virsh list --all | grep ofvm | cut -d' ' -f4` do echo "screen -t $DOMAIN bash" >> $RC echo "stuff \"virsh console $DOMAIN\015\"" >> $RC done # open kvm domain console in screen window if [ -e $RC ] then if screen -ls | grep bootkvmdomains then echo "already attached" exec screen -r bootkvmdomains fi exec screen -c $RC fi
KVM/virsh 操作にせよ OVS 操作にせよ大半が root 権限が必要なのでもう root 実行を前提にしてしまった…。毎回 screen 設定ファイルを生成しているので、KVM Guest の追加削除があっても対応。
これで、KVM Host にログインしたらこのスクリプトを叩くと一気に全 KVM Guest が起動して、screen 窓ひらいて console 接続するところまで行きます。