2014年1月29日水曜日

Vagrantってなんじゃ?

VagrantはVirtual Boxという仮想環境のコマンドインターフェースのようなものです。
VirtualBoxをつかえば、手元に簡単にテスト環境を用意できます。


VirtualBoxのインストール


VirtualBoxをダウンロードしてインストールします。この時点のvagrantの最新がVirtualBox 4.2までの対応だったようなので、ここでは4.2をインストールします。(Vagrantをgemではなく、パッケージインストーラの最新版から入れたらVirtualBoxの最新版に対応していました。)



インストーラなので、そのままインストールします。



Vagrant のインストール


インストールが完了したら次はvagrant のインストールです。
vagrantは、最近のバージョンはGemではなくPackageインストーラでインストールします。


vagrantのインストールが完了したら、vagrantをつかって仮想環境をつくります。VirtualBoxでは仮想環境を固めたものをboxと呼ぶようです。
今回はCentOSのboxを追加します。各boxが、

http://www.vagrantbox.es/

に公開されているので、以下のようなコマンドでURLを追加します。



boxには名前をつける必要があるので、ここでは myfirstbox という名前をつけてみます。
$ vagrant box add myfirstbox https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box
これで、インストールが完了しました。



仮想環境の起動


適当なディレクトリをつくって、vagrant initをすると、Vagrantfileが出来ます。
$ mkdir virtualbox
$ cd virtualbox/
$ vagrant init
$ ls -l
total 16
-rw-r--r--  1 memorycraft  staff  4668  1 28 22:27 Vagrantfile

Vagrantfileを開いて、2点だけ修正します。
・box名を先ほどつけたmyfirstboxへ変更する
・ネットワーク設定をプライベートIPの192.168.33.10に設定する
IPは他のIPでも構いません

Vagrantfile

config.vm.box = "base"
↓
config.vm.box = "myfirstbox"

#config.vm.network :private_network, ip: "192.168.33.10"
↓
config.vm.network :private_network, ip: "192.168.33.10"


これで起動の準備が整ったので、起動してみます。起動はvagrant upをつかいます。
起動のログ出力が正常に終わると、起動完了です。
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'myfirstbox'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
[default] Configuring and enabling network interfaces...
[default] Mounting shared folders...
[default] -- /vagrant


起動した環境にsshログインしてみます。
$ vagrant ssh-config --host myfirstbox >> ~/.ssh/config
$ ssh myfirstbox
[vagrant@vagrant-centos65 ~]$
[vagrant@vagrant-centos65 ~]$ pwd
/home/vagrant
[vagrant@vagrant-centos65 ~]$ ls -la
total 24
drwx------. 3 vagrant vagrant 4096 Dec  5 14:18 .
drwxr-xr-x. 3 root    root    4096 Dec  5 14:18 ..
-rw-r--r--. 1 vagrant vagrant   18 Jul 18  2013 .bash_logout
-rw-r--r--. 1 vagrant vagrant  176 Jul 18  2013 .bash_profile
-rw-r--r--. 1 vagrant vagrant  124 Jul 18  2013 .bashrc
drwx------. 2 vagrant vagrant 4096 Dec  5 14:18 .ssh
[vagrant@vagrant-centos65 ~]$



おお、入れました。
それでは、ここにhttpdをインストールしてWEBサーバーを立ちあげてみましょう。
$ sudo yum install -y httpd
$ sudo /etc/init.d/httpd start



確認


そしてブラウザで、さきほどVagrantFileに記述したIPにアクセスしてみます。



簡単にWEBサーバーが出来てしまいました。
これで他に開発環境とかもつくれてしまいますね。

以上です。