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の共有だけでその問題が解決できるのはかなり便利だ.
あとは, もう少し効率的にやる方法を知りたいな...