hashicorp / vagrant

Vagrant is a tool for building and distributing development environments.
https://www.vagrantup.com
Other
26.01k stars 4.42k forks source link

synced_folder fails for NFS on Sonoma 14.4 #13364

Open dfreudenberger opened 3 months ago

dfreudenberger commented 3 months ago

Debug output

https://gist.github.com/dfreudenberger/7e894870dc739cba7876fef4983c8508

Expected behavior

synced_folder should mount the specified path using NFS.

Actual behavior

Apple decided to limit the access to kickstart which is currently used to restart the NFS daemon. Therefore the mount operation fails.

Edit: It seems like Vagrant doesn't actually use kickstart by itself; instead, it runs "sudo nfsd restart" which causes the error mentioned. Perhaps modifying this line to use update instead of restart could solve the problem.

sudo nfsd restart
Could not kickstart service "com.apple.nfsd": 1: Operation not permitted
/bin/launchctl exited with status 1

Reproduction information

Vagrant version

Vagrant 2.4.1

Host operating system

MacOS Sonoma 14.4

Guest operating system

Fedora

Steps to reproduce

  1. vagrant up

Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
    config.vm.box = "bento/fedora-latest"

    config.vm.provider "parallels" do |prl|
        prl.update_guest_tools = false
    end

    config.vm.synced_folder '~/dev', "/data", :type => 'nfs', :nfs_version => 3
end
bjoernhaeuser commented 3 months ago

I am working with @dfreudenberger and having the same problem.

It looks like replacing "nfsd restart" with "nfsd update" here. Though I am not able to run vagrant from a checkout and install the parallels plugin and therefore not really able to provide a fix right now.

emek-lu commented 3 months ago

I too am experiencing the same problem.

bmorg commented 3 months ago

We are affected too:

==> devserver: Exporting NFS shared folders...
==> devserver: Preparing to edit /etc/exports. Administrator privileges will be required...
Password:
Could not kickstart service "com.apple.nfsd": 1: Operation not permitted
/bin/launchctl exited with status 1
Stark-X commented 3 months ago

Same here

Rob-Voss commented 3 months ago

I'm also on 14.4 and I'm also having this same issue:

==> default: Installing NFS client... ==> default: Exporting NFS shared folders... ==> default: Preparing to edit /etc/exports. Administrator privileges will be required... Could not kickstart service "com.apple.nfsd": 1: Operation not permitted /bin/launchctl exited with status 1 ==> default: Mounting NFS shared folders... The following SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed!

mount -o vers=3 10.211.55.2:/Users/user/Work/test.com/site /vagrant-nfs-test.com

Stdout from the command:

Stderr from the command:

mount.nfs: an incorrect mount option was specified

Twansparant commented 3 months ago

Yes, unfortunately bumped into the same issue today...

bjoernhaeuser commented 3 months ago

Also happens with Sonoma 14.4.1 :(

unlovedsam commented 3 months ago

Same - manually running sudo nfsd update in terminal resolves

adherzog commented 3 months ago

@bjoernhaeuser

Though I am not able to run vagrant from a checkout and install the parallels plugin and therefore not really able to provide a fix right now.

I don't think anyone else has mentioned it, but I'm having the same issue with VirtualBox - this issue isn't Parallels specific.

lookareyellow commented 3 months ago

FYI I have the same issue issue using VMWare Fusion

gapop commented 3 months ago

I came upon this thread while searching for the error message. Unrelated to Vagrant, I have this issue on my Mac. The update command suggested above didn’t help. However, I could start nfsd by doing sudo launchctl start nfsd. I hope this helps.

nicolasverlhiac commented 3 months ago

sudo nfsd update

It's working, thanks.

jason-apolline commented 2 months ago

Same - manually running sudo nfsd update in terminal resolves

@unlovedsam What exactly did you do? I've run the command before the vagrant up command - no change. After the vagrant up command exits, no change. In a separate terminal at the point when the kickstart error is emitted, no change. Still unable to mount my synced_folder.

jason-apolline commented 2 months ago

Same - manually running sudo nfsd update in terminal resolves

@unlovedsam What exactly did you do? I've run the command before the vagrant up command - no change. After the vagrant up command exits, no change. In a separate terminal at the point when the kickstart error is emitted, no change. Still unable to mount my synced_folder.

It seems to be a UDP issue in my case with Ubuntu 22.04. Forcing UDP off in the Vagrantfile seems to sort that out (also probably with the help of sudo nsfd update). This is odd as I have other 22.04 VMs and didn't experience this issue, however I can't recall if I have used them since updating to Sonoma.

gutobenn commented 2 months ago

I’m also having this issue but couldn't fix it by running sudo nfsd update or sudo launchctl start nfsd. Does anyone has any idea why? I am on macOS Sonoma 14.4.1. Thanks

iainhouston commented 2 months ago

All I can say is that I now have it working but I am not sure why having tried every suggested combination above and these combinations were not previously working.

Most recently I did the following:

But honestly I can't say for certain which of these got NFS working between host and guest files. AND, even though I am manually checking that the files are in sync, the launchctl kickstart error message is still being generated

FYI I added a file to /private/etc/sudoers.d that contains:

Cmnd_Alias VAGRANT_EXPORTS_ADD = /usr/bin/tee -a /etc/exports
Cmnd_Alias VAGRANT_NFSD = /sbin/nfsd restart
Cmnd_Alias VAGRANT_EXPORTS_REMOVE = /usr/bin/sed -E -e /*/ d -ibak /etc/exports
%admin ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD, VAGRANT_EXPORTS_REMOVE

Note that changing /sbin/nfsd restart above to /sbin/nfsd update still causes the kickstart error