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

🎂 Chef/Puppetのメリット

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

😎 Vagrant

Vagrant 公式サイト

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

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

vagrant plugin install vagrant-omnibus

👽 VirtualBox

VirtualBox 公式サイト

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

😀 仮想マシンの作成

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

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プロジェクトを作成します。本当はスクリプトでプロジェクトを作りたかったんですが、ちょっと失敗中のため、引き続き調査。

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レベルで簡単にアプリケーションをデプロイできるようになりたいなぁと夢見ています。

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)