vagrantを使ってubuntuでrails環境を自動構築
vagrantでrails環境を作る
チーム開発でRails環境が必要になったので, vagrantで環境構築の自動化をやってみた.
今回は, vagrantとshellscriptを使って, VM作成~Railsプロジェクト作成までを自動化してみた.
必要なソフトウェアのインストール
僕が使ったのは以下の2つ
Virtualbox 8.0.28
Vagrant 1.8.6
rails環境を作る
このリポジトリをgit cloneしてvagrant upするだけで,
以下の作業が行われる.
構成はこんな感じ.

VirtualboxでUbuntuを動かして, ruby, railsをインストールするという流れ.
vagrantを使うと, プロジェクト作成まで自動化することが出来るなんてすばらしい.
Vagrantfileの読み方
VMの構成を設定する
vm.boxでは, OSを指定する. 今回はubuntuの有力boxであるubuntu/trusty64を利用した.
vm.networkでは, VMが使用するIP, portを指定する.
VMとホストで通信するときはこのIP, PORTを利用する.
memoryやstorage, name, hostnameなどは適宜設定して欲しい.
VM上の環境を設定する
vm.provisionを使うことで, VM上の環境設定を行うことができる.
今回は, shellscriptを使って, 環境設定を行った.
config.vm.provision :shell, :path => "general_setup.sh", privileged: true config.vm.provision :shell, :path => "rbenv.sh", privileged: false config.vm.provision :shell, :path => "rails_practice.sh", privileged: false
vm.provision :shellとすることで, :pathに指定したスクリプトをshellscriptとして実行してくれる.
スクリプトの実行権限はprivilegedによって変更できる.
privileged: trueは, 管理者権限を表す. defaultはtrueである.
つまり, general_setup.shは管理者権限で実行され, rbenv.shは一般ユーザで実行される.
Vagrantでやることはこれだけ.
あとは, VM上で実行するコマンドをshellscriptに逐次書いていく.
shellscriptの書き方
注意したいのは, privilegedのtrue/falseに関係なく, ルートディレクトリがsuのルートになることだ. script内部でpathを指定する場合や一般ユーザでインストールを行ったソフトの実行は絶対パスを指定する必要がある.
※ 僕はこれでめっちゃハマった
僕のVagrantfileでは, 3つのscriptに設定手順を書いている.
Vagrantfileに記述した順番にscriptを実行していく.
つまり, general_setup -> rbenv -> rails_practiceの順に実行されていく.
shellscriptの内容は上記のgithubShuzoN/rails_practiceを参考にして欲しい.
vagrantの基本コマンド
| cmd | function |
|---|---|
| vagrant up | VMの起動, VMが存在しない場合はVM作成. 初回はprovision自動実行 |
| vagrant halt | VMの停止 |
| vagrant destroy | VMの削除 |
| vagrant ssh | VMにSSHで接続 |
| vagrant status | VMの状態を表示 |
vagrantを使ってみて
vagrantを使うことで, railsの環境設定を自動化した.
これまで環境設定にはかなりの時間を要してきた.
vagrantfileの共有だけでその問題が解決できるのはかなり便利だ.
あとは, もう少し効率的にやる方法を知りたいな...