理系学生日記

おまえはいつまで学生気分なのか

Vagrant + Sahara メモ

**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 の扱いかもしれませんが