【发布时间】:2016-04-22 09:46:38
【问题描述】:
我正在使用 Vagrant 在 Virtualbox 上设置一个 ubuntu 盒子。 在 vagrant 文件中,我指定了同步文件夹以将我的代码与来宾同步:
config.vm.synced_folder "/host/target/webapp", "/guest/webapp"
我的问题只有在我机器被销毁然后用 vagrant up 重建时才会出现。在这种情况下,Vagrant 会将访客上的文件夹同步到主机上的文件夹,而不是主机到访客。
"/guest/webapp" ---> "/host/target/webapp"
我根本不喜欢这种行为,如果我没有将主机上的代码签入到我的版本控制中,我将失去我的代码。
同步应该是双向的吗?有没有办法将其配置为仅同步一种首选主机到访客的方式。在vagrant basic sync 中找不到任何相关信息
在下面的 cmets 中,建议在哪里我的配置(Chef-Solo)哪里是问题的原因。 为了排除配置阶段,我做了以下操作:
Vagrant up --no-provision
与访客同步的主机内容。
rm -r /guest/webapp/ 在来宾上
导致主机内容也被删除。
mkdir /guest/webapp/test 在客户机上
创建的文件夹 test 也在主机上创建。
我认为这证明了同步是双向的。
【问题讨论】:
-
这真的很奇怪,因为我只看到过主机 --> 来宾,所以即使您在来宾上同步现有文件夹,它也会被主机上的文件夹内容替换。我也有一些疑问,如果主机文件夹被来宾的内容替换,那么您当前的文件夹将是空的,因为 vagrant 将默认文件夹同步为
/vagrant与当前文件夹。对于这种情况(/vagrant 文件夹),您确认它工作正常? -
我理解你的疑惑。我正在使用 Chef-Solo 进行配置,将标准数据放入“/guest/webapp”,我不知道哪个先发生,文件夹的同步或加载标准数据的配置。只有当它是第一个配置时才会发生这种情况,换句话说,当我运行任何 Vagrant reload/up --Provision 并且该框已经创建时,主机文件夹不会被覆盖。
-
在配置之前安装共享文件夹。只需第一次运行
vagrant up而不配置vagrant up --no-provision,您将看到主机文件夹未更改,它必须来自您的配置 -
您认为该条款会如何更改/归档主机上的文件夹?这甚至可能吗?我很确定我的厨师食谱不会更改主机上的任何文件或文件夹。据我所知,厨师不会更改“/host/target/webapp”。
-
我不了解厨师,所以我无法发表评论,但您是否第一次运行
vagrant up没有配置vagrant up --no-provision,您会看到主机文件夹没有更改
标签: vagrant virtualbox