風は北向き ブログ

時の狭間で 今 お前を待つ

ESXi 5.5 で 再起動 (自動)

開発サーバなどで、夜的に落として朝起動ということを自動で行いたいという欲求があります。。 通常であれば、OSの標準のcronやタスクスケジューラでできると思うのですが、ESXiの仮想環境だとちょっと複雑になります。

ESXi 5.5 の仮想環境では、以下の方法でできそうです。

手法 ・シャットダウン 1.ゲスト側からホスト側にシャットダウン命令を出す。 (最初に一定時間スリープを入れる※ゲスト側のシャットダウン猶予時間) 2.直後に自分自身(ゲスト側)のシャットダウンを行う。 ・起動 3.ホスト側BIOSの起動時刻設定 4.ESXiの仮想マシンの起動およびシャットダウンの設定で、 対象ゲストを自動起動 となります。

ここでは上記手法の2、3、4は、普通に設定できると思いますので、1の部分を記載します。 環境 ホスト:ESXi5.5 ゲスト:なんでもOK(のはず)

1.ホスト側ESXi5.5でSSHサービスを有効化しておく また、SSHは鍵認証でログインできるようにしておく。(セキュリティ的にあれですが) ※公開鍵の置き場所は、/etc/ssh/keys-root/authorized_keys Windowsの場合はputtygen、Linuxの場合は、ssh-keygen等を使用して、公開鍵をauthorized_keysに記載

2.仮想ホスト(ESXi上のデータストア)に、シャットダウンシェルを準備しておく ここに置いておかないと消されてしまうので。。

※以下参考(シャットダウン猶予時間=15分としています)

vi /vmfs/volumes/datastore1/remote_shutdown.sh

#!/bin/sh
/sbin/sleep 15m
/sbin/shutdown.sh
/sbin/poweroff
exit

ファイルに実行権限を付けます。

chmod 700 /vmfs/volumes/datastore1/remote_shutdown.sh

3.ゲスト側にホスト側シャットダウンシェルを呼び出すシェルを準備しておく ※1:秘密鍵を~/.ssh/id_rsaに置いた場合 ※2:XXX.XXX.XXX.XXXはホスト側IPアドレス 対象ゲストのIPアドレスからは、SSHを許可する設定にしておく。。。(セキュリティ的にあれですが) ※3:以下ディレクトリ名・ファイル名・ユーザー名は適宜、合わせてください。

vi ~/bin/remote_shutdown_call.sh

nohupにして、抜けても、処理が続行される容易にしておく

ssh -i ~/.ssh/id_rsa -l root XXX.XXX.XXX.XXX "/sbin/nohup /vmfs/volumes/datastore1/remote_shutdown.sh > /dev/null < /dev/null &"

※以下、Windowsの場合、puttyplinkを使うパターン

C:\Users\XXXXXXXX\bin\remote_shutdown_call.bat

CD "C:\Program Files (x86)\PuTTY"
plink -ssh XXX.XXX.XXX.XXX -l root -i C:\Users\XXXXXXXX\.ssh/id_rsa /vmfs/volumes/datastore1/remote_shutdown.sh

4.cron タススケジューラへの登録 最後に、ゲスト側OSに合わせて(cronやタスクスケジューラ)シャットダウン時刻のスケジュール化し、 上記シェル/バッチを起動するようにする。 また、別のスケジュールタスクで、ゲストOS自身のシャットダウンを行う。

以上です。