Vagrant 文件和目录的自定义路径

Custom paths for Vagrant's files and dirs

我开始为我的应用程序使用 Vagrant (+ chef_solo),现在应用程序的文件夹包含以下文件和目录:

  ... app's files

  .vagrant
  Vagrantfile

  Cheffile
  Cheffile.lock

  data_bags

  cookbooks
  projects_cookbooks

  ... app's files

如果能把Vagrant相关的文件移动到专门的目录下就好了。 我的意思是这样的:

  ... app's files

  .vagrant
  Vagrantfile

  Vagrant
    Cheffile
    Cheffile.lock

    data_bags

    cookbooks
    projects_cookbooks

  ... app's files

在这种情况下,我的应用程序的根文件夹中将只有 3 个文件(目录)

  ... app's files

  .vagrant
  Vagrantfile
  Vagrant

  ... app's files

我认为这对我和我的项目都非常好。

所以,我想重构 Vargant 文件的文件结构。

有人知道我该怎么做吗? 或者 Vargant 文件的结构完全是硬编码的?

vagrant chef provisioning 有一些您可以使用的变量,因此您已经可以拥有类似

的内容
config.vm.provision :chef_solo do |chef|
  chef.cookbooks_path = ["vagrant/cookbooks", "vagrant/projects_cookbooks"]
  chef.data_bags_path = "vagrant/data_bags"
end

虽然我不确定 Cheffile,但我认为它必须与 Vagrantfile 一起存储,但我不完全确定

我想我找到了一种让我的应用文件夹更好的方法。 如果你想清理项目的文件夹,只需执行以下操作:

(我的意思是APP是HOST机器上你项目的文件夹)

1) 在APP文件夹中创建Vagrant文件夹

2) 移动以下文件

.vagrant
Cheffile
Cheffile.lock
Vagrantfile
cookbooks
cookbooks_addons
bata_bags
... and all Vagrant-related files

进入APP/Vagrant文件夹

3) 在 Vagrant 文件中添加额外的行

config.vm.synced_folder '..', '/APP'

就是这样。现在你将所有与 Vagrant 相关的文件都放入了 Vagrant 文件夹

现在你应该使用vagrant upvagrant sshvagrant halt进入APP/Vagrant 文件夹。

并且您应该使用虚拟机中的 /APP 文件夹来访问您的项目代码。

我觉得还不错!