Help us understand the problem. What is going on with this article?

Vagrantで複数環境のSynced FolderにNFSを利用する方法

More than 5 years have passed since last update.

VagrantのSynced FolderにNFSを利用したが、 複数のVagrantfileで別々の環境を立ち上げる場合 に設定が上手くいかずハマったのでメモ。

環境

  • Mac OSX Yosemite 10.10.3
  • Vagrant 1.7.2
  • VirtualBox 4.3.26
  • 仮想環境1と仮想環境2を別々のVagrantfileで定義
    • どちらの環境もSynced FolderをNFSを使ってマウントするように

不具合の発生

  1. 仮想環境1で vagrant up
  2. 起動後、仮想環境1にSSH接続してマウントされたディレクトリを確認。
  3. 仮想環境2で vagrant up
  4. 起動後、仮想環境2のマウントされたディレクトリは問題ないが、仮想環境1でマウントしたディレクトリにアクセスできず

原因の調査

VM起動時に以下のような流れでディレクトリをマウントしていることを確認。

  1. 現在の /etc/exports のバックアップファイルを作成
  2. Synced Folderの共有設定を /etc/exports に書き込み
  3. VMが指定したディレクトリをNFSマウント
  4. /etc/exports を1.で作成したバックアップファイルに復元

どうやら2つめのVMを起動した際に 1つめのVMに対するNFSサーバーの設定が無効化 されてしまったことが原因のよう。

これはVagrantのバグ報告でも上がっているのだけど、まだ対応もコメントもされていない。(バージョン1.7.2時点)
参考:NFS problem on multiple machines #4990

解決策

だったら手動で /etc/exports を書いておいて、Vagrantには触らせなければ良いじゃん!ということで。

/etc/exportsの手動設定

/srv -network 192.168.33.0 -mask 255.255.255.0 -alldirs -mapall=501:20
  • /srv 以下のディレクトリを 192.168.33.x のIPアドレスからマウントできるように設定。
  • サブディレクトリのマウントを許可

NFSサーバーの再起動

/etc/exports は更新しただけではNFSサーバーに設定が反映されないので、Macを再起動するか、NFSサーバーを再起動する。

sudo kill -s HUP `cat /var/run/mountd.pid`

参考:Mac OS X で NFS を使う

Vagrantfileの設定

VagrantでSynced FolderにNFSを指定すると、通常では毎回 /etc/exports を書き換えてしまう。
そのため、Synced Folderのオプションで nfs_export: false を指定し、書き換えを行わないように設定する必要がある。

config.vm.synced_folder ".", "/vagrant", type: "nfs", nfs_export: false, mount_options: ["nolock", "vers=3", "udp"]
jyokyoku
インスパイアデザインの取締役兼、エンジニア。WordPressのテーマ・プラグイン開発を年間100件以上、独自のフレームワークを用いて開発をしています。
http://inspire-tech.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした