流浪者和同步文件夹:如何将所有者设置为默认流浪者用户以外的用户?

Vagrant and synced folders: How to set the owner to a user other than the default vagrant user?

我正在尝试在具有多个移动部件的 CoreOS Vagrant VM 中为 Rails 2 项目设置开发环境。 一旦配置了 VM,就会有一个 Puppet 脚本来安装所有零碎的东西并启动它们。

我正在处理的位在我的本地计算机 (OS X 10.10.5) 上,通过 synced folder 暴露在 VM 中并出现在正确的位置在具有所有者 vagrant 和组 vagrant.

的 VM 中

为了使其与系统的其余部分一起工作,需要将该文件夹的所有权设置为 projectx

简单地告诉 Puppet 设置权限是行不通的。他们没有改变。我已经通过手动 chowning 文件确认了这一点,它们没有改变。

我不能只在 Vagrantfile 中设置用户,因为在 Puppet 完成它的工作之前没有 projectx 用户。

看来我唯一的解决办法是破解 Puppet 文件并消除对 projectx 用户的使用,但我宁愿找到一种方法来设置 [=12] 的所有者=] 而不是那样会更干净。

如何将 synced folder 的所有权设置为在供应 VM 之后才创建的用户?

遗憾的是,没有简单的方法可以做到这一点。

常见的解决方法是在同步文件夹配置中使用 uid 和 gid。这样您就可以创建一个同步文件夹作为用户,稍后将添加到系统中。

projectx_uid = 1001
projectx_gid = 1001
config.vm.synced_folder "src/", "/srv/website",
  owner: projectx_uid, group: projectx_guid0

这意味着 projectx 应该在配置过程的最开始就创建,这样它将具有可预测的 uid/gid

Vagrant 跟踪器中的相关问题:https://github.com/mitchellh/vagrant/issues/936