使用 Vagrant 和 VirtualBox 创建多个主机
Create multiple host with Vagrant and VirtualBox
我有以下问题。我需要一个 Vagrant 文件来创建:
- 3 Ubuntu 18.04 主机;
- 1 Ubuntu 16.04 主机。
我有以下 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
我的问题是我不知道为什么要创建节点:
- node-0 Ubuntu 16.04 而不是 18.04 <-- 为什么????
- node-1 与 Ubuntu 18.04(这是正确的)
- node-2 Ubuntu 18.04(这是正确的)
- 旧版 Ubuntu 16.04(这是正确的)
如您所知,我的主要问题是节点 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
。
我有以下问题。我需要一个 Vagrant 文件来创建:
- 3 Ubuntu 18.04 主机;
- 1 Ubuntu 16.04 主机。
我有以下 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
我的问题是我不知道为什么要创建节点:
- node-0 Ubuntu 16.04 而不是 18.04 <-- 为什么????
- node-1 与 Ubuntu 18.04(这是正确的)
- node-2 Ubuntu 18.04(这是正确的)
- 旧版 Ubuntu 16.04(这是正确的)
如您所知,我的主要问题是节点 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
。