Vagrantのバージョン1.8からスナップショット機能が追加されました。スナップショットを使えば、仮想マシンのある時点の状態を保存/復元することができます。
例えばシステムに何か変更を加える場合でも、事前にスナップショットを取っておけば安心して作業ができます。
スナップショットを取るには2つの方法があります。
名前付きのスナップショットの復元は、vagrant snapshot save
で名前付きのスナップショットを取得する。vagrant snapshot restore
で行います。
この場合、復元はvagrant snapshot push
でスナップショットをスタックにプッシュする。vagrant snapshot pop
で行います。
これら2つの方法を混ぜて使うのは安全ではありませんので、どちらか一方だけを使用するようにしましょう。
また、vagrant destroy
するとスナップショットも失われるので、これも注意してください。
名前付きスナップショットの保存と復元
スナップショットに名前を付けて保存するには次のコマンドを実行します。
vagrant snapshot save NAME
これはNAMEという名前でスナップショットを保存します。
名前付きスナップショットの復元するにはvagrant snapshot restore
を使います。それは次のように実行します。
vagrant snapshot restore NAME
これはNAMEという名前付きスナップショットを復元します。
restoreのオプション
- --[no-]provision
-
プロビジョナーを強制的に実行する(または実行を禁止する)。
- --no-start
-
復元した後にゲストマシンを起動しない。
スナップショットのプッシュとポップ
スナップショットをプッシュするには次のコマンドを実行します。
vagrant snapshot push
これはスナップショットをスタックにプッシュ(保存)します。
スタックにプッシュされたスナップショットを復元するにはvagrant snapshot pop
を使います。
vagrant snapshot pop
popのオプション
- --[no-]provision
-
プロビジョナーを強制的に実行する(または実行を禁止する)。
- --no-delete
-
復元した後にスナップショットを削除しない。
したがって、再度popを実行すると同じ状態に復元される。 - --no-start
-
復元した後にゲストマシンを起動しない。
スナップショットを一覧表示する
保存されたすべてのスナップショットを一覧表示したければ、次のコマンドを実行します。
vagrant snapshot list
スナップショットを削除する
スナップショットを削除するには次のコマンドを実行します。
vagrant snapshot delete NAME
これはNAMEで指定されたスナップショットを削除します。
VirtualBoxなどいくつかのプロバイダでは、最初に全ての子スナップショットを削除する必要があります。
Vagrant自体は何が子であるかは、追跡していません。
従って最初に全ての子スナップショットを削除するのはユーザの責任です。
一般にスナップショットを取得した順序と逆の順序で削除すれば問題ないでしょう。
おわりに
スナップショットはいくつでも取得することができます。
便利な機能ですので、皆さんも使ってみてください。