VagrantはVirtualBoxやVMWareで建てた仮想マシンをターミナルから触れる用にするツールです。これを使うことで、MacBook上でCentOS環境のテストすることができます。今回はVirtualBox上でVagrantを動かしていきます。

まずはインストール

インストールはインストーラが用意されているので簡単です。

VagrantはVirtualBox上で動くので、VirtualBoxをインストールしましょう。

https://www.virtualbox.org/wiki/Downloads

次にVagrant本体をインストール

http://www.vagrantup.com/downloads

これで使えるようになっているはずなので、ターミナル上で

vagrant -v

と叩いてみましょう。バージョンが帰ってくれば正しくインストールされています。

boxの登録

同じ環境を複数建てたいことがあるので、VagrantではBoxというものが用意されています。要は、テンプレートみたいなものです。

Vagrant公式のvagrantcloud.com

にいっぱいBoxのファイルがアップロードされています。今回はCentOS6.5を使ってみましょう。

discover boxesをクリックするといろいろとファイルが出てきますが、CentOS6.5で設定するのでchef/centos-6.5を選択することにしましょう。

このboxを追加するには

vagrant box add chef/centos-6.5

というコマンドを叩けばOKです。途中でVirtualBoxかVMWareかどっち?と聞かれるので使っている方を答えます。結構時間はかかります。まー、OSをダウンロードしてんだからしょうがないと思っておきましょう。

box: Successfully added box 'chef/centos-6.5' (v1.0.0) for 'virtualbox'!

と出たらうまくいってます。

vagrant box list

と打つとちゃんと追加されていることがわかります。

vagrantの初期化

Vagrantのサーバを建てるために使うフォルダを作っておきましょう。今回は~/vagrantというフォルダを作業フォルダしようと思います。

mkdir ~/vagrant

さて、いくつもVagrantでは複数のサーバーを同時に管理することができるので、さらにプロジェクトごとにフォルダを作ります。

cd ~/vagrant
mkdir test-project

ここまでできたら、いよいよサーバーを作りましょう。

cd test-project
vagrant init chef/centos-6.5

これを叩くと次のような文章が出てきます。

A "Vagrantfile" has been placed in this directory. You are now
ready to "vagrant up" your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
"vagrantup.com" for more information on using Vagrant.

一瞬エラーかとドキッとしますが、エラーではなく、「サーバーの設定やらなんやら書いてあるVagrantfileを作ったよ!」と言われているだけです。

Vagrantfileの編集

このままでも起動はできるのですが、折角なのでネットワークへの接続もしておきましょう。作られたVagrantfileを好きなエディタで編集します。

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

の部分のコメントアウトを外しておきましょう。最近気づいたんですが、このVagrantfileってRubyで書かれてますね。

ここで、VirtualBoxを立ち上げてみると新しくtest-projectという仮想マシンができていることがわかります。

サーバの起動

サーバの起動は簡単です。

vagrant up

以上です。するとサーバの起動が始まります。

ちなみにサーバーを落とすときは

vagrant halt

で落として、この仮想マシンを壊してしまうには

vagrant destroy

です。

起動しているか止まっているか知りたいときは対応するディレクトリ内で

vagrant status

をするとどういう状態か確認することができます。

サーバへのアクセス

これも簡単で

vagrant ssh

とするとvagrantの中身にアクセスできます。

まとめ

あとはサーバーの設定やらなんやらして開発を進めていく感じです。例えば、httpdをインストールしておくと、先ほど、Vagrantfileで設定したipアドレス(http://192.168.33.10)にアクセスするとうまく動きます。このvagrantの設定をするときにAnsibleなどで設定を自動化しておくと、本番環境に移った時にもファイルをアップロードするだけでよくなるので、気分がいいです。

Vagrantはもちろん環境を揃えて開発するという目的が大きいのですが、それだけでなく、初心者がいきなりサーバを借りたりすることをせず、サーバを触りなれるという練習/勉強の目的で導入するのもいいかもしれません。