Vagrantでsandboxを利用する

Saharaはコマンドラインから仮想マシンの状態をsandboxモード(変更をいつでも巻き戻せる)に変更できるプラグインだ。これを使うことで、例えばchefのレシピ作成やミドルウェアのインストールの評価などがやりやすくなる。

http://www.ryuzee.com/contents/blog/4310

なんとすばらしい。

早速やらねば!

1.前提情報

2.Saharaのインストール

以下のコマンドでインストールできます。

>vagrant gem install sahara

そうすると、利用可能なサブコマンドにsandboxが追加されます。

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

3.sandboxの利用

3.1.sandboxモードに入る

起動中のVagrantディレクトリ(「Vagrantfile」のある場所)に移動し、

>vagrant sandbox on
[default] - Enabling sandbox
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
3.2.試しにPHPをインストールしてみる
>vagrant ssh
Last login: Tue Apr  2 10:07:23 2013 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$ sudo yum install php
[vagrant@localhost ~]$ php -v
PHP 5.3.3 (cli) (built: Feb 22 2013 02:51:11)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

5.3.3が入りました。

3.3.sandboxのロールバック
>vagrant sandbox rollback
[default] - powering off machine
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
[default] - roll back machine
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
[default] - starting the machine again
3.4.先ほど入れたPHPは?
>vagrant ssh
Last login: Tue Apr  2 10:07:23 2013 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$ php -v
 -bash: php: command not found

おお!ロールバックされてます!

4.その他の利用可能コマンド

  • sandboxモードを終了する
>vagrant sandbox off
[default] - switching sandbox off
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

コミットされていない修正はロールバックされます。

  • sandboxに行った修正を確定する
>vagrant sandbox commit
[default] - unwinding sandbox
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
[default] - fastforwarding sandbox
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
unwinding
巻き戻し
fastforwarding
早送り

巻き戻して、早送り・・・。うん?

  • 現在sandboxモードかどうかを確認する
>vagrant sandbox status
[default] - snapshot mode is on

「sandbox mode」ではない・・・ぼそっ。。。

5.まとめ

  • sandboxを利用すれば気軽にいろいろ試すことができますね。
  • 使い方もRDBMSと似ているので直感的に理解できました。