Pocket

11880434_l

こんにちは、nodaです。

Vagrantには多くのプラグインがあります。
Saharasandboxモードの切り替えを簡単にできるプラグインで、その利便性などから必携のプラグインと言えます。

今回はSaharaプラグインの導入から、sandboxモードの使い方です。

ちなみに、GitHubにVagrantの公式Wikiがあり、プラグインの情報も紹介されているので参考にしてみてください。

■sandboxモードってなんぞ!?

8786360_l
(サハラ砂漠とは、だいぶ大きな砂場のようですw)

sandboxモードとは、仮想マシンに対して行った変更をロールバックできるようにする機能です。
試しにいじってみる環境のことをサンドボックスと言ったりしますが、それと同様です。

少しの巻き戻しのためにvagrant upをしなくても、好きな地点に戻れるので効率が良くなりますよね。

■今回の実験

Vagrant環境においてsandboxモードを使用し、変更が巻き戻っているか確認します。

Saharaプラグインが使えるのは、ProviderにVirtualBoxを利用している場合です。
VMwareやEC2などでは動作しません。(スナップショットを使えということでしょうか…)

検証環境
OSX Ver10.9.4
VirtualBox 4.3.12 for OS X hosts
Vagrant 1.6.3
仮想マシン CentOS-6.4

さぁ、ターミナルを立ち上げてみましょう!!

■Saharaプラグインの導入

まずはローカル(ホスト)側での作業となります。
“plugin -h”とすると、Vagrantプラグインで使用できるサブコマンドを表示することができます。

$ vagrant plugin -h

“list”サブコマンドを使用すると、インストールされているプラグインの一覧が表示されるので確認してみましょう。

$ vagrant plugin list

Saharaは入っていませんね?
“install”サブコマンドでプラグインをインストールできるので、プラグイン名を引数にして実行します。

$ vagrant plugin install sahara

もう一度、”list”サブコマンドでSaharaがインストールされたことを確認しましょう。

Screen Shot 2014-07-12 at 7.25.50 PM

■変更を巻き戻してみる

今回は、あるファイル(sandbox_B)を作ったけど、作る前に戻りたいというシナリオです。
便宜上ですが、sandbox_Aというファイルを作っておいてください。

$ vagrant up
$ vagrant ssh
$ touch sandbox_A
$ ls -l
$ exit

Screen Shot 2014-07-14 at 12.42.50 AM

Saharaの使用はローカル(ホスト)側での作業なので、”exit”で仮想マシンから抜けてください。

では実際にSaharaを使っていきます。
変更を巻き戻すには、sandboxモードを有効にします。
下記コマンドを実行してから変更を加えていきましょう。
※sandboxモードの操作は、”Vagrantfile”があるディレクトリで行ってください。

$ vagrant sandbox on

Screen Shot 2014-07-14 at 12.53.19 AM

ご推察の通り、”sandbox -h”とすると、sandboxコマンドにつけるサブコマンドを確認できます。

$ vagrant sandbox -h

Screen Shot 2014-07-14 at 12.54.01 AM

現在のsandboxの状態をみるサウンドには”status”をつけます。

$ vagrant sandbox status

Screen Shot 2014-07-14 at 12.54.41 AM

さて仮想マシンにログインし、今度はsandbox_Bというファイルを作りましょう。

$ vagrant ssh
$ touch sandbox_B
$ ls -l
$ exit

Screen Shot 2014-07-14 at 12.56.15 AM

いよいよここで、sandboxモードをONにした状態に戻します。

$ vagrant sandbox rollback

Screen Shot 2014-07-14 at 12.56.46 AM

仮想マシンにログインし、確認してみましょう。

$ vagrant ssh
$ ls -l

Screen Shot 2014-07-14 at 12.57.29 AM

sandbox_Bが消えていて、sandbox_Aだけが残っていることが確認できたと思います。

■変更を残したい場合

もし変更が気に入って、残しておきたいといった場合です。

sandbox_Cというファイルを作成します。

$ touch sandbox_C
$ ls -l
$ exit

Screen Shot 2014-07-14 at 12.58.45 AM

sandbox_Cが気に入ったので、残しておきたいというシナリオです。

変更を残すには”commit”を使います。
ですが”commit”は仮想マシンが起動していると遅いので、仮想マシンを一旦止めてから実行しましょう。

$ vagrant suspend
$ ### haltでもOKです。
$ vagrant sandbox commit

Screen Shot 2014-07-14 at 1.00.14 AM

三度、仮想マシンにログインし、確認してみます。

$ vagrant resume
$ ### haltしたときはupです。
$ vagrant ssh
$ ls -l

Screen Shot 2014-07-14 at 1.01.21 AM

sandbox_Cは残っていますが、commitされているかは確認できませんよね。
なのでsandbox_Dを作成し、もう一度”rollback”をしてみて確認します。

$ touch sandbox_D
$ ls -l
$ exit

Screen Shot 2014-07-14 at 1.02.06 AM

“rollback”をして、変更を巻き戻します。

$ vagrant sandbox rollback

Screen Shot 2014-07-14 at 1.02.54 AM

最後です…仮想マシンにログインし、確認してみましょう。

$ vagrant ssh
$ ls -l

Screen Shot 2014-07-14 at 1.03.40 AM

sandbox_Dはcommitしてないので消され、commitをしたsandbox_Cと、sandboxモードが有効になる前からあったsandbox_Aが残されています。

簡単ですが、今回の実験を図にするとかんな感じでしょうか。
sandbox

ちなみに、sandboxモードの終わり方です。

$ vagrant sandbox off

※sandboxモードを終了させるときも、仮想マシンを一旦止めたほうが早いです(^_^;)

Screen Shot 2014-07-14 at 1.04.57 AM

■今回はここまで

今回は超便利なSaharaプラグインを使って、sandboxモードの切り替えを楽に行いました。
sandboxモードを有効にすることで、簡単にロールバックできるので、思い切った開発ができるのではないでしょうか。

さて、4回に渡ってVagrantを連載いたしましたが、Vagrantの基本的な機能はこれで抑えられたかと思います。
またVagrantでトピックがあった場合は、記事を掲載します。

ではでは。