通过NFS共享
Windows用户: NFS文件夹在Windows主机上不起作用
1、先决条件:
宿主机上安装nfs,但是Mac OS X 默认是集成了的,可以省略
我这边是centos7.3
[root@vagrant ubuntu]# yum -y install nfs-utils rpcbind
[root@vagrant ubuntu]# systemctl start nfs
虚拟机上安装nfs
首先要把虚拟机的网络设置成 :private_network 模式,不能用public——network模式
vagrant@ubuntu-xenial:~$ sudo apt-get install nfs-common
暂停虚拟机
2、配置Vagrantfile文件,添加如下
config.vm.synced_folder "website/" "/opt/website", type: "nfs"
3、宿主机上创建目录
[root@vagrant ubuntu]# mkdir website
4、当我启动虚拟机(或者重启载入虚拟机的时候)
使用命令 vagrant reload 重启虚拟机后才会生效,期间会修改宿主计算机的 /etc/exports 文件
然后查看exports发现多了如下(默认是anonuid为root)
[root@vagrant website]# vim /etc/exports
VAGRANT-BEGIN: 0 c7e6bcff-6e7d-4551-8fcb-e5cabda96273
"/vagrant/ubuntu/website" 192.168.30.100(rw,no_subtree_check,all_squash,anonuid=0,anongid=0,fsid=1307718439)
VAGRANT-END: 0 c7e6bcff-6e7d-4551-8fcb-e5cabda96273
选项: 1、map_uid和map_gid(int) - 分别映射所有读/写请求的UID / GID
config.vm.synced_folder "website/","/opt/website", type: "nfs",map_uid: "1002",map_gid: "1002"
注意:
- 主机上的用户和虚拟机上的用户,必须使用同一个uid和gid
宿主机和虚拟机上都要有该用户
宿主机上创建如下:
[root@vagrant website]# useradd -u 1002 www
重新载入虚拟机
[root@vagrant ubuntu]# vagrant reload
登录虚拟机上查看
[root@vagrant ubuntu]# vagrant ssh
vagrant@ubuntu-xenial:/opt/website$ ll
total 4
drwxr-xr-x 2 www www 33 Jan 31 10:25 ./
drwxr-xr-x 3 root root 4096 Jan 31 10:05 ../
-rw-r--r-- 1 www www 0 Jan 31 10:06 a
-rw-r--r-- 1 www www 0 Jan 31 10:25 b
-rw-r--r-- 1 www www 0 Jan 31 10:25 c
注意: 如果vagrant宿主机是普通用户运行,那么就需要根据系统类型,配置visudoer,摘入官网如下:
对于OS X,sudoers应该有这个条目:
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
对于Ubuntu Linux,sudoers应该是这样的:
Cmnd_Alias VAGRANT_EXPORTS_CHOWN = /bin/chown 0:0 /tmp/*
Cmnd_Alias VAGRANT_EXPORTS_MV = /bin/mv -f /tmp/* /etc/exports
Cmnd_Alias VAGRANT_NFSD_CHECK = /etc/init.d/nfs-kernel-server status
Cmnd_Alias VAGRANT_NFSD_START = /etc/init.d/nfs-kernel-server start
Cmnd_Alias VAGRANT_NFSD_APPLY = /usr/sbin/exportfs -ar
%sudo ALL=(root) NOPASSWD: VAGRANT_EXPORTS_CHOWN, VAGRANT_EXPORTS_MV, VAGRANT_NFSD_CHECK, VAGRANT_NFSD_START, VAGRANT_NFSD_APPLY
对于Fedora Linux,sudoers可能看起来像这样(因为你的用户属于流浪者组):
Cmnd_Alias VAGRANT_EXPORTS_CHOWN = /bin/chown 0:0 /tmp/*
Cmnd_Alias VAGRANT_EXPORTS_MV = /bin/mv -f /tmp/* /etc/exports
Cmnd_Alias VAGRANT_NFSD_CHECK = /usr/bin/systemctl status --no-pager nfs-server.service
Cmnd_Alias VAGRANT_NFSD_START = /usr/bin/systemctl start nfs-server.service
Cmnd_Alias VAGRANT_NFSD_APPLY = /usr/sbin/exportfs -ar
%vagrant ALL=(root) NOPASSWD: VAGRANT_EXPORTS_CHOWN, VAGRANT_EXPORTS_MV, VAGRANT_NFSD_CHECK, VAGRANT_NFSD_START