
こんにちは、NDです。
Vagrantには多くのプラグインがあります。
Saharaはsandboxモードの切り替えを簡単にできるプラグインで、その利便性などから必携のプラグインと言えます。
今回はSaharaプラグインの導入から、sandboxモードの使い方です。
ちなみに、GitHubにVagrantの公式Wikiがあり、プラグインの情報も紹介されているので参考にしてみてください。
■sandboxモードってなんぞ!?
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プラグインで使用できるサブコマンドを表示することができます。
[bash] $ vagrant plugin -h [/bash]
“list”サブコマンドを使用すると、インストールされているプラグインの一覧が表示されるので確認してみましょう。
[bash] $ vagrant plugin list [/bash]
Saharaは入っていませんね?
“install”サブコマンドでプラグインをインストールできるので、プラグイン名を引数にして実行します。
[bash] $ vagrant plugin install sahara [/bash]
もう一度、”list”サブコマンドでSaharaがインストールされたことを確認しましょう。

■変更を巻き戻してみる
今回は、あるファイル(sandbox_B)を作ったけど、作る前に戻りたいというシナリオです。
便宜上ですが、sandbox_Aというファイルを作っておいてください。
[bash] $ vagrant up $ vagrant ssh $ touch sandbox_A $ ls -l $ exit [/bash]

Saharaの使用はローカル(ホスト)側での作業なので、”exit”で仮想マシンから抜けてください。
では実際にSaharaを使っていきます。
変更を巻き戻すには、sandboxモードを有効にします。
下記コマンドを実行してから変更を加えていきましょう。
※sandboxモードの操作は、”Vagrantfile”があるディレクトリで行ってください。
[bash] $ vagrant sandbox on [/bash]

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

現在のsandboxの状態をみるサウンドには”status”をつけます。
[bash] $ vagrant sandbox status [/bash]

さて仮想マシンにログインし、今度はsandbox_Bというファイルを作りましょう。
[bash] $ vagrant ssh $ touch sandbox_B $ ls -l $ exit [/bash]

いよいよここで、sandboxモードをONにした状態に戻します。
[bash] $ vagrant sandbox rollback [/bash]

仮想マシンにログインし、確認してみましょう。
[bash] $ vagrant ssh $ ls -l [/bash]

sandbox_Bが消えていて、sandbox_Aだけが残っていることが確認できたと思います。
■変更を残したい場合
もし変更が気に入って、残しておきたいといった場合です。
sandbox_Cというファイルを作成します。
[bash] $ touch sandbox_C $ ls -l $ exit [/bash]

sandbox_Cが気に入ったので、残しておきたいというシナリオです。
変更を残すには”commit”を使います。
ですが”commit”は仮想マシンが起動していると遅いので、仮想マシンを一旦止めてから実行しましょう。
[bash] $ vagrant suspend $ ### haltでもOKです。 $ vagrant sandbox commit [/bash]

三度、仮想マシンにログインし、確認してみます。
[bash] $ vagrant resume $ ### haltしたときはupです。 $ vagrant ssh $ ls -l [/bash]

sandbox_Cは残っていますが、commitされているかは確認できませんよね。
なのでsandbox_Dを作成し、もう一度”rollback”をしてみて確認します。
[bash] $ touch sandbox_D $ ls -l $ exit [/bash]

“rollback”をして、変更を巻き戻します。
[bash] $ vagrant sandbox rollback [/bash]

最後です…仮想マシンにログインし、確認してみましょう。
[bash] $ vagrant ssh $ ls -l [/bash]

sandbox_Dはcommitしてないので消され、commitをしたsandbox_Cと、sandboxモードが有効になる前からあったsandbox_Aが残されています。
ちなみに、sandboxモードの終わり方です。
[bash] $ vagrant sandbox off [/bash]
※sandboxモードを終了させるときも、仮想マシンを一旦止めたほうが早いです(^_^;)

■今回はここまで
今回は超便利なSaharaプラグインを使って、sandboxモードの切り替えを楽に行いました。
sandboxモードを有効にすることで、簡単にロールバックできるので、思い切った開発ができるのではないでしょうか。
さて、4回に渡ってVagrantを連載いたしましたが、Vagrantの基本的な機能はこれで抑えられたかと思います。
またVagrantでトピックがあった場合は、記事を掲載します。
ではでは。