#概要
Vagrant内のcentos6でrailsの開発をしてました。
ソースを共有フォルダに置いて動作確認していたのですが挙動が
異様に重く、調べてみたらvagrantのデフォルトのファイル共有のせいでした。
NFSを利用したら早くなったのでその時のメモです。
#環境
- Mac OS X 10.9.5
- Vagrant 1.6.5
- VirtualBox 4.3.18
#内容
1. Vagrantfileの編集
ゲスト側の/vagrantをNFSでマウントするようにします。*参考リンク
#--途中は省略--
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
#--途中は省略--
config.vm.synced_folder ".", "/vagrant", type: "nfs"
#--以後も省略--
end
2. sudoerを編集
このままでもOKですが、vagrant起動時に毎回マウントするため
パスワード聞かれます。聞かれないようにできるみたいです。
mac上で下記shellを一度実行すれば聞かれなくなりました。
一応スクリプトを写経。
#!/bin/bash
# Add Vagrant's NFS setup commands to sudoers, for `vagrant up` without a password
# Updated to work with Vagrant 1.3.x
# Stage updated sudoers in a temporary file for syntax checking
TMP=$(mktemp -t vagrant_sudoers)
cat /etc/sudoers > $TMP
cat >> $TMP <<EOF
# Allow passwordless startup of Vagrant when using NFS.
# https://gist.github.com/joemaller/6764700
Cmnd_Alias VAGRANT_EXPORTS_ADD = /bin/bash -c echo '*' >> /etc/exports
Cmnd_Alias VAGRANT_NFSD = /sbin/nfsd restart
Cmnd_Alias VAGRANT_EXPORTS_REMOVE = /usr/bin/sed -E -e /*/ d -ibak /etc/exports
%staff ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD, VAGRANT_EXPORTS_REMOVE
EOF
# Check syntax and overwrite sudoers if clean
visudo -c -f $TMP
if [ $? -eq 0 ]; then
echo "Adding vagrant commands to sudoers"
cat $TMP > /etc/sudoers
else
echo "sudoers syntax wasn't valid. Aborting!"
fi
rm -f $TMP
こんな結果になるはず
/tmp/vagrant_sudoers.ziY5C09b: parsed OK
Adding vagrant commands to sudoers
3. リロード
vagrantをリロードしましょう。
リロード後何も聞かれずに立ち上がればOKです。
vagrant reload
4. 結果
早くなりました。
ローカルで動かしてる時より若干遅いかな?くらいのレベルです。
(以前はrails起動ですら数分かかってました。)
#参考URL
http://docs.vagrantup.com/v2/synced-folders/nfs.html
http://webradar.info/2014/03/06/slowly-rails-in-vagrant/
https://gist.github.com/joemaller/6764700#file-install_vagrant_sudoers-sh