**Vagrant とは
もはやおなじみかもしれませんが、vagrant はコマンドラインから仮想マシンを作成したり破棄したり、プラグインと連携させることで特定時点の仮想マシンの状態にロールバックさせたりすることができるツールです。 公式ページはこちらですが、まぁなんというか、vagrant が何かがよくわからないですね。 -Documentation | Vagrant by HashiCorp
Introduction | Vagrant by HashiCorp> Vagrant provides easy to configure, reproducible, and portable work environments built on top of industry-standard technology and controlled by a single consistent workflow to help maximize the productivity and flexibility of you and your team. <<
仮想マシンの構築は従来、OS をダウンロードして、VM に OS をインストールして、一々構築して…という作業で数時間かかっていましたが、vagrant を使うと、マジメに数分で終わります。
**インストール
最初は gem で vagrant 入れてたんですがなんかそれバージョン 1.0 らしくて、今の vagrant は 1.1 *1 です。1.1 は gem ではなく、pkg からインストールするので、以下から最新版をダウンロード+インストールしましょう。 -http://downloads.vagrantup.com/
**仮想マシンを立ち上げる
vagrant がインストールされたら、次は box ファイルのダウンロードです。 box ファイルというと新出の単語ですが、仮想マシンの素といいますか、仮想マシンのスケルトンとなるファイルです。
Boxes | Vagrant by HashiCorp> Boxes are the skeleton from which Vagrant machines are constructed. << ぼくはこちらから CentOS をダウンロードしました。後述しますが、vagrant 自体にダウンロードさせることもできますが、何回か失敗しており、何回もダウンロードする羽目になったのでブラウザでダウンロードしました。余談ですが、ファイルサイズは 500 MB くらいなのに、ダウンロード速度がかなり遅いです。 -NREL Vagrant Base Boxes - Browse Files at SourceForge.net
その後ですが、
|tcsh|
box ファイルを "centos" という名前で登録
$ vagrant box add centos ~/Downloads/CentOS-6.4-x86_64-v20130309.box
仮想マシンの初期化 -> カレントディレクトリに Vagrantfile というファイルができる。
これがこの仮想マシンの設定ファイル
$ vagrant init
仮想マシンの起動!!
$ vagrant up ||< これで仮想マシンが立ち上がります。簡単ですね。実際に ssh ログインも当然可能です。vagrant ssh でログインしていますが、通常の ssh コマンドでもログイン可能です。
|tcsh| $ vagrant ssh Last login: Mon May 6 11:22:50 2013 from 10.0.2.2 Welcome to your Vagrant-built virtual machine. $ cat /etc/redhat-release CentOS release 6.4 (Final) ||<
**仮想マシンの commit/rollback
冒頭に述べたロールバックやコミットといったものは、Sahara と呼ばれるプラグインで実現します。 Sahara の公式はこちらですが、開発が止まっており vagrant 1.1 には対応していません。fork された Sahara で 1.1 に対応していますので、こちらをインストールしましょう。
|tcsh| $ git clone https://github.com/ryuzee/sahara $ bundle install $ bundle exec rake build $ vagrant plugin install pkg/sahara-0.0.14.gem ||<
これにより、vagrant で sandbox コマンドが使用できるようになります。 sandbox コマンドで実際に rollback を使用した例が次になります。ここでは、rollback.txt というファイルを仮想マシン上に追加した後、rollback させています。rollback した後、当然 rollback.txt はなくなっています。
|tcsh|
サンドボックスモードに入る
$ vagrant sandbox on 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
仮想マシンにログイン
$ vagrant ssh Last login: Mon May 6 11:53:05 2013 from 10.0.2.2 Welcome to your Vagrant-built virtual machine.
仮想マシン内で rollback.txt つくる
$ touch rollback.txt $ ls -l rollback.txt -rw-rw-r-- 1 vagrant vagrant 0 5月 6 12:16 2013 rollback.txt $ logout
ロールバックや!
$ 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 $ ls -l 合計 0 $ logout
サンドボックスモードから出る
$ vagrant sandbox off ||<
*1:公式ページのパスが /v2/ で切られているので、もしかしたら ver.2 の扱いかもしれませんが