Vagrant NFS Sync Problem on macOS High Sierra
Disclaimer: This is a temporary workaround which worked for me, not a permanent fix and may not work for everyone
Many of us have already tried to enjoy the flavor of new OS by Apple, macOS High Sierra. And doing that might have given you nightmares, if you were using vagrant based project.
If anyone is facing missing files or file changes not getting detected issue inside Vagrant, this might be because of compatibility issues with Apple’s latest APFS (apple file system) and Vagrant’s synced folder type: nfs.
I experienced this a couple of weeks ago, when I upgraded to beta version of masOS High Sierra. I was not able to see few modules (like views, taxonomy) and files present inside vagrant (guest) even though these were actually present in my mac machine (host). This is an already reported issue.
After struggling for next few days and nights, I found the quickest possible solution for this problem which worked for me.
Please follow the steps mentioned below:
- Install the vagrant gatling rsync plugin.
vagrant plugin install vagrant-gatling-rsync
- Do changes in VagrantFile as mentioned here : https://github.com/smerrill/vagrant-gatling-rsync
Add the following part only:
Add this code in Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| function of your VagrantFile. You can also refer to VagrantFile line number: 108 & 114 given in https://github.com/navneet0693/high-sierra-vagrant-problem.
# Configure the window for gatling to coalesce writes. if Vagrant.has_plugin?("vagrant-gatling-rsync") config.gatling.latency = 2.5 config.gatling.time_format = "%H:%M:%S" end # Automatically sync when machines with rsync folders come up. config.gatling.rsync_on_startup = true
- Important: Change vagrant_synced_folders type from `type: nfs` to `type: rsync` in box/config.yml. Sync folder is mostly your project repo, which shared b/w host (mac) and guest (vagrant box).
vagrant_synced_folders: # The first synced folder will be used for the default Drupal installation, if # build_makefile: is 'true'. - local_path: .. destination: /var/www/demo-drupal type: rsync create: true
- Then you will have provision your Vagrant again.
vagrant reload --provision