使用 Vagrant 和 VirtualBox 创建多个主机

Create multiple host with Vagrant and VirtualBox

我有以下问题。我需要一个 Vagrant 文件来创建:

我有以下 Vagrant 文件:

require 'yaml'

# Load settings from servers.yml file.
environment = YAML.load_file('env.yaml')

...

Vagrant.configure("2") do |config|
    environment["servers"].each do |server|
        config.vm.define server["name"] do |srv_config|
            srv_config.vm.box = server["box"]
            srv_config.ssh.insert_key = false
            srv_config.vm.hostname = server["name"]
            srv_config.vm.network :private_network, ip: server["eth1"]
            srv_config.vm.provider "virtualbox" do |v|
                v.name = server["name"]
                v.customize ["modifyvm", :id, "--groups", "/Development"]
                v.customize ["modifyvm", :id, "--memory", server["mem"]]
                v.customize ["modifyvm", :id, "--cpus", server["cpu"]]
            end

            srv_config.vm.provision "file" ...
        end
    end
end

现在我希望这个 Vagrant 文件从外部 env.yml 文件中获取服务器配置(OS、CPU、内存、IP 等):

servers:
- name: node-0
  box: generic/ubuntu1804
  eth1: 192.168.20.101
  mem: 1024
  cpu: 1
- name: node-1
  box: generic/ubuntu1804
  eth1: 192.168.20.102
  mem: 1024
  cpu: 1
- name: node-2
  box: generic/ubuntu1804
  eth1: 192.168.20.103
  mem: 1024
  cpu: 1
- name: legacy
  box: generic/ubuntu1604
  eth1: 192.168.20.105
  mem: 1024
  cpu: 1

我的问题是我不知道为什么要创建节点:

如您所知,我的主要问题是节点 0 是使用 Ubuntu 16.04 而不是 Ubuntu 18.04 创建的。为什么?我调试了代码,对于 srv_config.vm.box 对于 node-0 的值是 generic/ubuntu1804。此外,我正确地看到每台机器有 1 CPU 和 1 Gb RAM,但是在 Virtual Box 中我没有看到 Development 组中的机器。 任何人都可以帮助我理解为什么会出现这些问题?

我想我明白了。文件是正确的,问题是 Vagrant 缓存。我删除了 .vagrant 文件夹并再次 运行 vagrant up