LoginSignup
7
7

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-05-16

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"]
7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7