t-fjkの日記

日々の気になったことを適当に。ネタは Windows/Android アプリとか。これからサーバサイド系の話が増えていく予感。

Vagrant をまず使ってみる

最近はソースコードのビルドやテストだけじゃなく、
環境までコマンド一発で作れるようになりつつあるみたいですね。

チームで開発してるとよく聞く「俺の環境では動いた」という名言。
よくよく調べたらMySQLのテーブルを追加しないと動かなくなるような変更入れられてた、とか。
そういうトラブルを解決するための素敵なツール、Vagrant。
#「ベイグラント」と読むらしい

http://www.vagrantup.com/

簡単にVMの構築、破棄ができて
設定ファイルにApacheなどのインストールスクリプトも含めることができるらしい。

まずはダウンロード&インストール。
http://downloads.vagrantup.com/

そのあとは作業用のディレクトリ作成&初期化。

mkdir vagrant_getting_started
cd vagrant_getting_started
vagrant init

次にVMのイメージの追加。

vagrant box add precise32 http://files.vagrantup.com/precise32.box

ここでは Ubuntu イメージを precise32 という名前で追加。

Vagrant では VM イメージのことを Box と呼ぶらしい。
その他の VM イメージはこちら参照。
http://www.vagrantbox.es/

作業ディレクトリのVagrantfileが設定ファイルになっている。
このファイルでここで使用するVMイメージを指定。

config.vm.box = "precise32"

これで準備完了。

vagrant up

で起動して、

vagrant ssh

で接続。

作業ディレクトリの中身と、立ち上げた VM の /vagrant の中身が同期しているので
ホストマシンで作業したものを VM に持って行けて便利。

apache などを VM に入れたい場合、
インストールスクリプトを書いたものを
作業ディレクトリに保存したあと("bootstrap.sh" )、設定ファイルに反映する。

config.vm.provision :shell, :path => "bootstrap.sh"

このあと、

vagrant reload

で VM に変更が反映される(インストールされる)。

作業が終わって破棄したくなったら

vagrant destroy

でおしまい。

destroy をすると、VM で行った作業はすべて破棄される。
作業を中断する場合は、

vagrant suspend

vagrant halt

を使う。
作業を再会するときは

vagrant up

で。すごい時代だ。