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