【发布时间】:2021-05-30 23:01:20
【问题描述】:
我有以下问题。我需要一个 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 文件中获取服务器配置(操作系统、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(这是正确的)
您可以理解我的主要问题是 node-0 是使用 Ubuntu 16.04 而不是 Ubuntu 18.04 创建的。为什么?我调试了代码,对于srv_config.vm.box,对于node-0,值是generic/ubuntu1804。此外,我正确地看到每台机器有 1 个 CPU 和 1 Gb RAM,但在 Virtual Box 中我没有看到开发组中的机器。
任何人都可以帮助我理解为什么会出现这些问题?
【问题讨论】:
标签: vagrant virtualbox vagrantfile