こんにちわ。永野です。

インフラ構築を行う上でも欠かせなくなってきているVagrant
Ansibleのテストなどよく行うのですが、
何度何度も作り直すのは面倒くさいのでsahara pluginを導入して、
テスト後にスナップショットをRollBackして作業前に戻して何度もやっております。

試した環境

  • Vagrant 1.8.1
  • Sahara plugin 0.0.17
  • VirtualBox バージョン 5.0.14 r105127
    特にそれぞれのバージョンは正直意識していませんでしたが動作したので
    それぞれがバージョンアップしてもいまのところ大丈夫かもしれませんね。

saharaのインストール

pluginの確認

saharaが導入されているかを確認します。

% vagrant plugin list
vagrant-share (1.1.5, system)

saharaをインストール

% vagrant plugin install sahara
Installing the 'sahara' plugin. This can take a few minutes...
Installed the plugin 'sahara (0.0.17)'!

saharaのコマンド

それほど多くないところも良いですね。
よく間違うのが「vagrant sandbox」なのに「vagrant sahara」って入れてしまいます。

$ vagrant sandbox --help 
Usage: vagrant sandbox <command> [<args>]

Available subcommands:
     commit
     off
     on
     rollback
     status

pluginの導入確認

% vagrant plugin list
sahara (0.0.17)
vagrant-share (1.1.5, system)

saharaの使い方

saharaを有効化(on)

まずsaharaを有効化させます。

% vagrant sandbox on
[default] Starting sandbox mode...
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

仮想VMの現時点のスナップショットを取得する。(commit)

これによりcommit時点での仮想VMのイメージが取得されます。
少し時間がかかります。

% vagrant sandbox commit
[default] Committing the virtual machine...
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

仮想VMのcommitした時点まで戻す。(rollback)

これはcommitより時間はかかりません。

% vagrant sandbox rollback
[default] Rolling back the virtual machine...
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

saharaが有効か無効かを確認する。(status)

onなら有効化されています。
offなら無効化です。

vagrant sandbox status
[bar] Sandbox mode is on
[foo] Sandbox mode is on

commitからrollbackまでのテスト

httpdをyumでインストールして、
rollbackしてそれをなかったことにする一連の流れです。

→ホスト側で行う。
% vagrant sandbox commit
[default] Committing the virtual machine...
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
% vagrant ssh
→仮想VM側で行う。
$ sudo rpm -qa | grep httpd
$ sudo yum install -y httpd
  ※httpdインストールのログが流れます)   
完了しました!
$ sudo rpm -qa | grep httpd
httpd-tools-2.2.15-47.el6.centos.3.x86_64
httpd-2.2.15-47.el6.centos.3.x86_64
$ exit
→仮想VM側からexitする。
% vagrant sandbox rollback
[default] Rolling back the virtual machine...
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
% vagrant ssh
→仮想VM側で行う。
$ sudo rpm -qa | grep httpd
  ※表示されません。