我是stream浪汉和木偶新手,我创build了一个Debian Squeeze加独立木偶的基本框,使用这里的说明来安装Puppet以及Puppetlabs软件包 。
该框本身似乎成功导入,但一旦我开始configuration它,我得到的错误似乎是与主机上的NFS共享。 1000是vm上的Vagrant用户的uid。
错误:
Error: Failed to set owner to '1000': Operation not permitted - /vagrant/www/index.php Error: /Stage[main]/Perchdemo::Sites::Create/File[/vagrant/www/index.php]/owner: change from 501 to vagrant failed: Failed to set owner to '1000': Operation not permitted - /vagrant/www/index.php
这发生在我使用Puppet将index.php文件复制到主机文件系统上的share / vagrant / www时。 我已经使用这个Puppet模块在一个独立安装的虚拟机上的文件被托pipe在虚拟机的文件系统上,理想情况下,但我希望他们在虚拟机共享上。
用更多的信息编辑。 当我使用puppetlabs apache模块创build虚拟主机时,最初发生了错误。 不pipe哪个用户我尝试强制创build,都会失败,并出现相同的错误。
我的stream浪文件如下。
Vagrant::Config.run do |config| config.vm.box = "squeeze64" config.vm.network :hostonly, "10.1.0.52" config.nfs.map_uid = :auto config.nfs.map_gid = :auto config.vm.forward_port 80, 8080 config.vm.share_folder("v-web", "/vagrant/www", "./www", :nfs => true) config.vm.provision :shell, :inline => "echo \"Europe/London\" | sudo tee /etc/timezone && dpkg-reconfigure --frontend noninteractive tzdata" config.vm.provision :shell, :inline => "apt-get update --fix-missing" config.vm.provision :shell, :inline => "apt-get upgrade" config.vm.provision :puppet do |puppet| puppet.facter = { "fqdn" => "perchtutorial.eoms"} puppet.manifests_path = "puppet/manifests" puppet.manifest_file = "perchtutorial.pp" puppet.module_path = "puppet/modules" end end
为了摆脱这个权限问题,这里是我添加到我的Vagrantfile :
if (/darwin/ =~ RUBY_PLATFORM) != nil config.vm.synced_folder ".", "/host/path/to/shared/folder", nfs: true, :bsd__nfs_options => ["-maproot=0:0"] else config.vm.synced_folder ".", "/host/path/to/shared/folder", nfs: true, :linux__nfs_options => ["no_root_squash"] end
它将根据您的主机操作系统(OSX或Linux)调整NFS选项。
这可能是由NFS服务器上的“根压缩”造成的。
当NFS客户端计算机上的root用户尝试操作导出的NFS文件系统上的文件时,它使用非特权用户(通常是nobody或nfsnobody)的权限执行此操作。 在这种情况下,如果我正确读取,可能是Puppet(以root身份运行)无法操作NFS服务器上的文件,因为它的权限被映射到这个非特权用户。
要删除根压缩,请编辑NFS服务器上的/ etc / exports,并将no_root_squash添加到导出文件系统的选项中,然后运行exportfs -av来重新导出文件系统。
例如/ etc / exports行:
/srv 192.168.0.0/24 (rw,no_root_squash)
mbarthelemy的答案让我在那里一半,但最后,我不得不稍微调整一下:
在我的VagrantFile中,我将它添加到映射中以使其工作:
:linux__nfs_options => ["no_root_squash"], :map_uid => 0, :map_gid => 0