Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2862

仮想ホスト(ESXi)と仮想マシンの停止スクリプト

$
0
0

1.仮想マシンとESXiの停止

ESXiにログインし、すべて仮想マシンを停止するのも面倒なため、スクリプトを組みました。また、普通ならpowershellで行うところを、ESXiに組込み、外部のLinuxサーバからsshでアクセスし、スクリプトを蹴っても実行できるようにしています。

2.自動停止スクリプト

仮想ホストはESXi6.7です。

vmware-stop.sh
#停止除外マシンのVMIDを取得EXCLUDE=$(vim-cmd vmsvc/getallvms |grep <停止除外仮想マシン名> | awk'{print $1}')#ESXi上に搭載している仮想マシンのVMIDを取得for i in$(vim-cmd vmsvc/getallvms | awk'{print $1}'|sed '1d')do#除外仮想マシンの場合は処理をスキップif[$EXCLUDE-eq$i];then
        continue
    else#取得した仮想マシンのVMIDを参照し、シャットダウン実行if[$(vim-cmd vmsvc/power.getstate $i | awk'NR>1'|awk '{print $2}')='on'];then
            vim-cmd vmsvc/power.shutdown $i#シャットダウンが失敗した場合処理をスキップif[$?-ne 0 ];then
                continue
            else
                while true
                do#取得したVMIDを参照し、起動状態を確認if[$(vim-cmd vmsvc/power.getstate $i | awk'NR>1'|awk '{print $2}')='on'];then#10秒確認を停止sleep 10
                        continue
                    else
                        break
                    fi
                done
            fi
        else
            echo"OFF"fi
    fi
done#ESXiのメンテナンスモードへの移行実行
vim-cmd hostsvc/maintenance_mode_enter
while true
do#10秒ごとにメンテナンスモードへの移行確認実施if[$(vim-cmd /hostsvc/hostsummary | grep inMaintenanceMode|awk '{print $3}')='true,'];then
        break
    else
        sleep 10
        continue
    fi
poweroff

3.課題

スクリプトの除外処理でサーバを1台のみしか指定できないので、
改良が必要。また、仮想マシンにvmware toolsが入っていないと停止できないため、古すぎるOSやvmware toolsをインストールできない仮想アプライアンスなどは対応できないです。


Viewing all articles
Browse latest Browse all 2862

Trending Articles