rac*_*rew 7 nfs puppet vagrant
我是 Vagrant 和 Puppet 的新手,我创建了一个带有 Debian Squeeze 和独立 Puppet 的 Base Box,使用这里的说明安装 Puppet 和 Puppetlabs 包。
盒子本身似乎成功导入,但是一旦我开始配置它,我就会收到似乎与主机上的 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
Run Code Online (Sandbox Code Playgroud)
当我使用 Puppet 将 index.php 文件复制到主机文件系统上的共享 /vagrant/www 时,就会发生这种情况。我在 vm 上的 Puppet 独立安装中使用了这个 Puppet 模块,其中文件托管在 vm 的文件系统上,虽然我希望它们位于 nfs 共享上,但理想情况下。
编辑了更多信息。当我使用 puppetlabs apache 模块创建 vhost 时,最初发生了错误。但是,无论我尝试强制在哪个用户下创建它,它都会因相同的错误而失败。
我的 VagrantFile 如下。
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
Run Code Online (Sandbox Code Playgroud)
小智 5
为了摆脱这个权限问题,这是我添加到我的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
Run Code Online (Sandbox Code Playgroud)
它将根据您的主机操作系统(OSX 或 Linux)调整 NFS 选项。
小智 2
这可能是由 NFS 服务器上的“根挤压”引起的。
当 NFS 客户端计算机上的 root 用户尝试操作导出的 NFS 文件系统上的文件时,它会使用非特权用户(通常为 nobody 或 nfsnobody)的权限来执行此操作。在这种情况下,如果我没看错的话,Puppet(以 root 身份运行)可能无法操作 NFS 服务器上的文件,因为它的权限已映射到该非特权用户。
要删除 root 压缩,请编辑 NFS 服务器上的 /etc/exports,并添加no_root_squash
到导出文件系统的选项,然后运行exportfs -av
以重新导出文件系统。
/etc/exports 行示例:
/srv 192.168.0.0/24 (rw,no_root_squash)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8479 次 |
最近记录: |