Dou*_*oma 7 nfs vmware-fusion vagrant vagrantfile
在主机和VM之间实现Vagrant NFS"同步文件夹"的最佳方法是什么?
一般来说,我终于能够让NFS工作了,但它需要在VM内进行一些调整; 我不确定如何自动化这些更改以供其他人使用.
具体来说,我必须修改/ etc/passwd和/ etc/group中的UID/GID以匹配导出文件系统的用户/组的UID/GID.(例如主机使用502:20,VM apache用户必须设置为使用502:20)
如果没有此更改,我会遇到阻止Web应用运行的各种权限/所有权问题.通过UID/GID匹配,一切都很好.
我已经阅读了所有可以找到的文档,包括Vagrant网站.
作为旁注:我也试过本机文件夹同步(痛苦地慢)和rsync(100%CPU ......无法使用)
NFS似乎是性能的赢家,但我的设置是粗略的.
如果它有任何区别,我正在使用以下内容:
seb*_*hön 12
在Vagrantfile中,您可以将当前的uid/gid分配给nfs映射.(在配置后查看主机/ etc/exports.)
config.nfs.map_uid = Process.uid
config.nfs.map_gid = Process.gid
Run Code Online (Sandbox Code Playgroud)
使用Puppet作为配置程序,您可以更改这些值:
config.vm.provision :puppet, :facter => {
"host_uid" => config.nfs.map_uid,
"host_gid" => config.nfs.map_gid,
} do |puppet| ...
Run Code Online (Sandbox Code Playgroud)
所以你可以在变量等木偶范围内使用它
user { "www-data":
ensure => present,
uid => $::host_uid,
gid => $::host_gid,
}
Run Code Online (Sandbox Code Playgroud)
我认为在厨师中,自定义json选项相当于稍后在厨师食谱中使用它
Vagrant.configure("2") do |config|
config.vm.provision "chef_solo" do |chef|
# ...
chef.json = {
"map" => {
"uid" => config.nfs.map_uid,
"gid" => config.nfs.map_gid
}
}
end
end
Run Code Online (Sandbox Code Playgroud)
bindfs
GitLab在使用bindfsVagrant作为开发方法之前一直在使用.
甚至还有一个Vagrant插件:https://github.com/gael-ian/vagrant-bindfs
当文件仍然是项目的一部分时,相关的Vagrantfile行:
config.vm.synced_folder ".", "/vagrant", :disabled => true
config.vm.synced_folder "./home_git", "/git-nfs", :nfs => true
config.bindfs.bind_folder "/git-nfs", "/home/git", :owner => "1111", :group => "1111", :'create-as-user' => true, :perms => "u=rwx:g=rwx:o=rwx", :'create-with-perms' => "u=rwx:g=rwx:o=rwx", :'chown-ignore' => true, :'chgrp-ignore' => true, :'chmod-ignore' => true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9849 次 |
| 最近记录: |