VagrantでRails開発環境を整備 (CentOS 6.5/nginx/mysql5.6/rbenv/ruby2.1.0)

Vagrantネタ第二弾です。今回はVagrant + Chef Soloを使って、Rails開発用のboxをローカルで作れるようにしました。具体的には、CentOS 6.5上にChef Soloで、nginx/mysql5.6/rbenv/ruby2.1.0などのベーシックな環境を自動構築します。

test-kitchenでインフラのTDDに挑戦』でもほぼ同じことができます。加えて、Serverspecまでまとめで実行できるので、こちらのほうがオススメかも!


Vaggrant/Chefとは?

VagrantとはPC上に仮想マシンを作成できるツール。ChefやPuppetはサーバの構成管理ツール。

Vagrantのメリット

1
2
3
4
コマンド1つでVMを立ち上げたり・止めたり・削除したりできる
ChefやPuppetと併用できるので、複数人で本番と同じ開発環境を共有できる
(開発環境を構築する際に個人のローカル環境に依存するのを避ける事ができる)
AWSやDigital Oceanなどのインスタンスもコマンド一つで立ち上げ・削除できる

Chef/Puppetのメリット

1
サーバの構成情報をgitなどで管理できるので変更点管理・チームでの管理が容易になる

Vagrant

Vagrant 公式サイト

パッケージをDLしてインストール。

vagrantをインストールしたら、boxでChefを使えるようにするためのプラグインをインストール。あと、コミュニティの作ったCookbookのインストール。

1
vagrant plugin install vagrant-omnibus

VirtualBox

VirtualBox 公式サイト

パッケージをDLしてインストール。

仮想マシンの作成

自分の好きな場所(例は~/Dropbox/Vagrant)に仮想マシン用のフォルダを作成。

1
2
3
4
5
6
mkdir ~/Dropbox/vagrant
git clone https://github.com/morizyun/vagrant-rails.git vagrant-rails
cd vagrant-rails
bundle install
bundle exec berks install --path site-cookbooks
vagrant up

Railsプロジェクトの作成

続いてRailsプロジェクトを作成します。本当はスクリプトでプロジェクトを作りたかったんですが、ちょっと失敗中のため、引き続き調査。

1
2
3
4
5
6
7
8
vagrant ssh
cd /vagrant/app
rails new chef_rails --database=mysql
cd chef_rails
echo "gem 'therubyracer', platforms: :ruby" >> Gemfile
bundle install
bundle exec rake db:create
rails s

ブラウザでのアクセス

http://192.168.33.10/にブラウザをアクセスするとapp/フォルダの中のファイルにアクセスできます。

スクリーンショット 2014-03-16 11.29.17

GitHubリポジトリ

今回のVagrantfileをGitHubにも作っておきました!

morizyun/vagrant-rails

苦労している点

Chefのノウハウがまだ全然たまっていないので、なんでもないところでつまずいてずっとググっています。

目標はHerokuレベルで簡単にアプリケーションをデプロイできるようになりたいなぁと夢見ています。