VagrantプラグインSaharaを使ってみる

Vagrantには、Saharaというサンドボックスの状態を管理するプラグインがあります。Saharaを使って、サンドボックスで実行することにより、仮想サーバに対して行った変更を自由に元に戻すことができるそうです。

今日は、このSaharaを試してみます。なお、Vagrantのインストールについては、以前のエントリを参照してください。実行環境は、Macbook Air OSX 10.8.4 MountainLionです。

1.Saharaのインストール

Saharaプラグインをインストールします。

$ vagrant plugin install sahara

インストールされたか確認します。

$ vagrant plugin list
sahara (0.0.15)
$ vagrant -h
Usage: vagrant [-v] [-h] command [<args>]

    -v, --version                    Print the version and exit.
    -h, --help                       Print this help.

Available subcommands:
     box
     destroy
     halt
     init
     package
     plugin
     provision
     reload
     resume
     sandbox
     ssh
     ssh-config
     status
     suspend
     up

For help on any individual command run `vagrant COMMAND -h`

コマンドにsandboxが追加されました。

2.実行してみる

いよいよサンドボックスを試してみます。まずは、仮想サーバを起動します。

$ vagrant up

サンドボックスモードをオンにします。

$ vagrant sandbox on
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

仮想サーバにログインして、適当に変更してみます。

$ vagrant ssh
Last login: Sun Jul 21 06:05:23 2013 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.
[vagrant@rena ~]$ sudo chkconfig --list | grep httpd
[vagrant@rena ~]$ sudo yum install -y httpd
[vagrant@rena ~]$ sudo chkconfig --list | grep httpd
httpd          	0:off	1:off	2:off	3:off	4:off	5:off	6:off
[vagrant@rena ~]$ exit
logout
Connection to 127.0.0.1 closed.

rollbackしてみます。

$ vagrant sandbox rollback
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

元に戻っているでしょうか?

$ vagrant ssh
Last login: Sun Jul 21 06:05:23 2013 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.
[vagrant@rena ~]$ sudo chkconfig --list | grep httpd
[vagrant@rena ~]$ exit
logout
Connection to 127.0.0.1 closed.

おお、戻っています。すげー。
それではサンドボックスモードを抜けて終了します。

$ vagrant sandbox off
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
$ vagrant halt
[rena] Attempting graceful shutdown of VM...

vagrant sandbox offには20分程がかかりました。仕方のないことですが。
なお、変更を反映させるには、サンドボックスモード中にcommitを実行します。

$ vagrant sandbox commit

参考

下記サイトを参考にさせて頂きました。