MacOS XでVagrantにCentOS入れ、Railsアプリ制作、Heroku公開 vol.03

# Vagrant box作成編

MacOS X Yosemite で Heroku にアプリを公開するまでの環境構築を何回かに分けて書きます。

vol.01 [VirtualBox インストール編](http://qiita.com/hirolog/items/560ce489dce08f555876) 
vol.02 [Vagrant インストール編](http://qiita.com/hirolog/items/79c294da5225827f3f75)

も合わせてお読み下さい。（というか、先にこの2つのインストールが必要です）

今回は、Vagrantの仮想マシンを作成します。この仮想マシンのことをVagrantでは box と呼びます。
とにかく結論だけ分ければ良いなら本ページ最後の「まとめ」だけ見てください。

### その前にドキュメント読んでみよう

[Vagrant Docs日本語訳サイト ※リンク切れ](http://lab.raqda.com/vagrant/index.html)

※注 2016.02.08
リンク先が変わっているので以下に修正します。
[Vagrant Docs日本語訳サイト](http://raqda.com/vagrant/)

Vagrant Docsを日本語に訳してくれている素敵なサイトです。
とても読みやすく流し読みなら時間がかからないので、一読しておくと概要がつかめるので、少し遠回りして読んでみるのはオススメです。
時間がなくて早く仮想マシンを作って作業しなきゃいけない人は飛ばしてOKです。

### box 取ってくる？ 自分で作成する？

仮想マシンの実体である box をどうするか、です。

ググれば簡単に box が見つかりますが、それらを持ってきて使うことが果たして良いのかはちょっと考えておいた方が良さそうです。
どなたかが作成した box の場合、手間のかかりがちなOSインストール作業や初期設定が完了しているので、すぐに使えるという利便性があります。中には Rails や Chef など、開発環境もバッチリ揃っているのも少なくありません。
一方、何が入っているかわからないため、悪意があってもなくても、少し怖い気もします。yumのレポジトリがごちゃごちゃで、最初は良いけど後々苦労する、という可能性もあります。

### 自分で作成するなら？

VirtualBox+Vagrantのみでも box を作成できますし、veeweeやpackerなどを使って作る方法もあります。
結論として、ここではすでにできてる box をネットから取ってきて使うことにしますが、自分で作成してみたいという方はこれらのキーワードでググるとヒント出てくると思います。

けど自分で作成するとやはり、時間と手間、かかります。

## box を取ってこよう

Vagrantの box を持ってこれるサイトは、有名ドコロでは2ヶ所あります。

1. [Vagrantbox.es](http://www.vagrantbox.es/)
2. [Atlasのサイト（旧Vagrant Cloud）](https://atlas.hashicorp.com/boxes/search?utm_source=vagrantcloud.com&vagrantcloud=1)

注意点としてはどちらも box の情報が載ってますが、誰かが作成した box なので中身の安全性・信頼性は保証されてません。
2番目の Atlas の方は、前まで vagrantcloud.com というURLで公開されていたものが Atlas に移ったらしく、リダイレクトされる先のページです。ページ上部の注意書きはリダイレクトされた時だけ表示されます。
試しに ? 以降のURLパラメータを削除すると注意書きが消えます。

### Atlas（vagrantcloud.com）から取ってくる

ここではこの方法を使わないのですが、参考に。
vagrantcloud.comから持ってくる場合、コマンドで操作できます。まず初めに、

[Atlasのサイト（旧Vagrant Cloud）](https://atlas.hashicorp.com/boxes/search?utm_source=vagrantcloud.com&vagrantcloud=1)

の右上から Sign up してアカウントを作成します。アカウントを作成したら、ターミナルで

```
vagrant login
```

を叩いてみましょう。
作成したアカウントでログインできたら、

```
vagrant box add [BOX名] [.boxファイルのある場所]
```

で持ってこれます。VirtualBox用か、VMWare用かと聞かれたら、当然 VirtualBox用 を選択してください。
[BOX名]については上記 Atlas のサイトで欲しいOSのリンク名を入れて下さい。
例えば chef/centos-6.5 とか、mobileoverlord/centos-6.5 とかです。

### Vagrantbox.es から取ってくる

vagrantcloud.comの方がコマンド操作に統合されていて公式感があるのですが、仮想マシンの詳細がわからなすぎて不安があります。情報も少ないのでどうなってるのかよくわからないのです。

[Vagrantbox.es](http://www.vagrantbox.es/)

こちらの方がまだ少しだけ情報があるので、今回はこちらにある box の中から1つ持ってくることにします。

RedHat互換のCentOSを使おうと思います。CentOS 7系にするか、CentOS 6系にするかですが、chkconfigなどのコマンドに慣れている方は CentOS 6系の方が良いでしょう。
6系の box がいくつかありますが、GitHubで公開していて情報も記載されてる、

[GitHub - CentOS 6.5 x86_64](https://github.com/2creatives/vagrant-centos/)

を使うことにします。Vagrantで使うだけなら、上記GitHubではなくリリースのページを見て下さい。

[GitHub - CentOS 6.5 x86_64 releases](https://github.com/2creatives/vagrant-centos/releases)

なお、**取ってくると言っても、まだダウンロードはしないでください。**

## box を取得し、仮想マシン作成

前置き長くなりました、結論として仮想マシンを作成するだけなら、ここまでの記載は関係なく以下のコマンドだけでOKです。

[GitHub - CentOS 6.5 x86_64 releases](https://github.com/2creatives/vagrant-centos/releases)

このページ上部にある、

```
vagrant box add centos65-x86_64-20140116 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
```

というのをターミナルで打って下さい。なお、**300M弱をダウンロードすることになる**ので、高速安定回線で操作しましょう。
2015/03/01時点では上記の 20140116.box が最新ですが、GitHubにアクセスして最新情報を確認することとオススメします。

### box はどこにある？

以前は ~/.vagrant.d/boxes/ の配下に box の実体があった...ようなのです。
ググるとそうした記載がたくさん出てきます。ところがフォルダは存在してますが、box本体が見当たりません。
boxの実体は .vmdk という拡張子が付いているのでどこにあるかを探してみると、

/Users/[ユーザ名]/VirtualBox\ VMs/にあることが確認できます。

```
ls -la /Users/[ユーザ名]/VirtualBox\ VMs/
```

にファイルがあることを確認しましょう。使っている内にファイルサイズは数GBになっていくと思います。
（ごめんなさい、初期のサイズがわからなくなっちゃいました）
なお、**不要になったからといってこのファイルをいきなり削除しない**ようにしてください。
不要な box を削除するコマンドが用意されてます。

※ 2015/03/03 追記と修正

最新のVirtualBoxで確認したところ、boxファイルの実体は ~/.vagrant.d/boxes/ の配下にありました。.vmdkファイルを直接扱うことはまずないのでどこに保存されていても気にしなくて良いのですが、**巨大なファイルになっている可能性**はあるので、ディスク容量は常に気にしておきましょう。

## まとめ

長々と書きましたが、CentOSを使いたいだけなら

[GitHub - CentOS 6.5 x86_64 releases](https://github.com/2creatives/vagrant-centos/releases)

このページ上部にある、

```
vagrant box add centos65-x86_64-20140116 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
```

というのをターミナルで打って終了です(笑

次回、この box を使って仮想マシンのセットアップしていきます。

### キーワード

* MacOS X
* VirtualBox
* Vagrant
* CentOS
* Ruby on Rails
* RVM (Ruby Version Manager)
* Heroku