Vagrant 不读 Homestead.yaml

Vagrant doesn't read Homestead.yaml

我一直在尝试使用 Vagrant 在我的计算机和 Homestead VM 运行 之间同步一个文件夹。我的猜测是 Vagrant 没有读取我的 Homestead.yaml 文件,因为 VM 中没有反映任何变化。

我尝试了以下方法:

contents of ~/.homestead

Homestead.yaml

---
ip: "192.168.10.10"
memory: 512
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/Desktop/Laravel_Recipes
      to: /home/vagrant/Laravel_Recipes

sites:
    - map: recipes.dev
      to: /home/vagrant/Laravel_Recipes/public

databases:
    - homestead

# blackfire:
#     - id: foo
#       token: bar
#       client-id: foo
#       client-token: bar

# ports:
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp

原因

我像其他人一样按照 Laravel's Website 上给出的教程进行操作。我将他们的 github 存储库克隆到 ~/Homestead,就像教程中给出的那样。 运行 bash 脚本之后,目录 ~/.homestead 出现了。他们在 .homestead 目录中提到 运行 vagrant up。它需要 Homestead 目录中的文件。

所以最好的解决办法是使用
git clone https://github.com/laravel/homestead.git ~/.homestead
而不是
git clone https://github.com/laravel/homestead.git Homestead.

说明

原来我使用的是一个几乎是空的 Vagrantfile,里面全是评论。因此我没有使用 Laravel 提供的 Vagrantfile。我使用了 运行 vagrant init laravel/homestead

之后出现的默认 Vagrant 文件

普通的Vagrantfile设置几乎为零。它不会为用户指定的设置寻找任何 YAML 或 JSON 文件。由于这个原因,我所做的每一个更改结果都是无用的。

vagrant 文件必须显式加载 Homestead.yaml 文件才能获取用户设置。您可以编辑 Vagrantfile(您需要了解 Ruby 的基础知识或进行修补)或者只使用 Laravel.

附带的已配置 Vagrantfile

以下文章帮助我理解:

当您执行 homestead up 从 Homestead.yaml 文件加载的现有配置时。

但是,如果您更改任何现有配置,在您执行之前不会受到影响 homestead provision

参考:Configure Homestead

问题是在别名阶段用 init.sh 创建的 Vagrantfile 试图写入 .homestead 如果你有那个目录,它将被创建,你可以将它复制到 ~/Homestead 目录vagrant 会正常工作。否则你可以将 Vagrantfile 从 ~/Homestead/resources/localized 复制到 ~/Homestead