VirtualBoxのスナップショットを簡単に管理できるツールを書きました。GO言語で。
VagrantではSahara pluginを使うことで、VMの状態を以前の状態に巻き戻すことができます(sandobx mode)。
VMの中でいろいろいじっている際に変更前の状態に戻せるのはとても便利なのですが、Saharaでは戻せるチェックポイントをひとつしか作れません。
自分の場合、深遠なChefのレシピを書いている過程で、戻せるポイントを何個か置きたくなることがよくあります。
さて、VagrantのバックエンドとしてVirtualBoxを使っている人は多いかと思います。
バックエンドがVritualBoxの場合、SaharaのsandboxはVirtualBoxのsnapshotを使って実現されています。
VirtualBoxのsnapshotはひとつだけでなくいくつでも作ることができます。
CUIでVirtualBoxの操作(snapshotを作ったり)をするには、vboxmanage コマンドを使えばできるのですが、VMの名前が長かったりしてちょっと使いづらいです。
そこでsnapshotに関連する操作を簡単に実行できるラッパーツールを作りました。
- https://github.com/hirose31/vboxss
- https://github.com/hirose31/vboxss/releases
- ここから各プラットフォームのバイナリがダウンロードできます!
使い方
動作中のVMの一覧を得る
$ vboxss list vm1 vm1_default_1404895653615_55181 vm2 vm2_default_1404967162355_44921
VMの正規名は右側のながーいやつですが、vboxssは左の短縮名でも受け付けます。多くの場合、短縮名はvagrant initしたディレクトリ名になると思います。
あるVMのsnapshotの一覧を得る
$ vboxss list vm1 List of the snapshots of vm1_default_1404895653615_55181 initial e718f597-22b4-4bef-adf6-239fff78215f install-apps 5337e220-0075-46a5-8aaa-901361f352df before-apply-chef 703071da-26c1-4504-8c81-4535de33c2f2
listの後にVM名を指定すると、そのVMのsnapshotの一覧が表示されます。VM名は短縮名でも長い正規名でもOKです。
snapshotを使ってVMをレストアする
$ vboxss restore vm1 before-apply-chef
vm1という名のVMの状態を、before-apply-chefという名のsnapshotの状態に戻します。
vboxss restoreを実行すると、一旦VMが停止される点に留意してください。(レストア後、自動でまた立ち上がります)
snapshotを消す
$ vboxss delete vm1 provisioned