Vagrand、全boxのsuspend

タグ: Vagrand   VirtualBox  

ふと、思い出しました。作成しておいてまだ書いていなかったなと。

いつの頃からか、openSUSEのシャットダウンがうまく行かない場合が、起きていました。原因がわからずとも、いざとなったらSysリクエストで落とせるので、真面目には調べていませんでした。

あるとき、Sysリクエストで落とすためにキーボードに触った時、たまたまカーソルキーに触り、シャットダウン時の出力が表示され、それでVagrantが捕まえているネットワークのダウン待ちで、落ちなかったのが判明しました。

Vagrant側でシグナルを拾い、処理する方法を探しましたが、見つからないため、シャットダウンに実行されるシェルをKDE設定から指定することにしました。

#!/bin/bash

VBoxManage list runningvms | awk -e '{ sub(/{/, "", $2); sub(/}/, "", $2); print $2 }' | xargs -i VBoxManage controlvm {} savestate

検索すると、ダウンする対象を全部指定しろとか、全部の実行中のboxについて実行するとか書かれている記事は見つかりますが、具体的な方法が書かたものが見つかりませんでしたので、何かの参考になれば幸いです。

Vagrantのレベルではなく、Virtualboxのレベルで、サスペンド(savestate)されます。起動は、vagrant upで行えます。

私としては、コンピューターの電源を落とすときは、boxはアイドル状態の場合が多いため、いきなり落ちてもらってもいいんです。ただ、消したと思い、一度眠り、夜中にまだ電源が入りっぱなしでドキッとするという事態が避けられれば満足です。