使用继承配置多个主机,覆盖内存

时间:2019-01-18 11:28:07

标签: vagrant virtualbox vagrantfile

我有一个Vagrantfile,可配置6个虚拟机。除了必需的内存大小(和IP地址)外,它们都相似。

我想为RAM大小设置一个默认值,并在必要时进行更改,process1process2应该获得6GB。

我尝试使用多个前缀(app,v,...)更改.memory,但显然语法不正确。 我也尝试过app.customize ["modifyvm", :id, "--memory", "6144"],但vagrant validate对此有所抱怨。

当前文件如下:

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure( VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "geerlingguy/centos7"
  config.vm.provider :virtualbox do |v|
    v.memory = 2048
    v.linked_clone = true
  end

  config.vm.define "process1" do |app|
    app.vm.hostname = "process1"
    app.vm.network :private_network, ip: "192.168.60.11"
  end

  config.vm.define "process2" do |app|
    app.vm.hostname = "process2"
    app.vm.network :private_network, ip: "192.168.60.12"
  end

  config.vm.define "index1" do |app|
    app.vm.hostname = "index1"
    app.vm.network :private_network, ip: "192.168.60.13"
  end

  config.vm.define "index2" do |app|
    app.vm.hostname = "index2"
    app.vm.network :private_network, ip: "192.168.60.14"
  end

  config.vm.define "quorum" do |app|
    app.vm.hostname = "quorum"
    app.vm.network :private_network, ip: "192.168.60.15"
  end

  config.vm.define "control" do |app|
    app.vm.hostname = "control"
    app.vm.network :private_network, ip: "192.168.60.21"
  end

end

1 个答案:

答案 0 :(得分:1)

您需要覆盖每个块

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure( VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "geerlingguy/centos7"
  config.vm.provider :virtualbox do |v|
    v.memory = 2048
    v.linked_clone = true
  end

  config.vm.define "process1" do |app|
    app.vm.hostname = "process1"
    app.vm.network :private_network, ip: "192.168.60.11"
    app.vm.provider :virtualbox do |v|
      v.memory = 6144
    end
  end

  config.vm.define "process2" do |app|
    app.vm.hostname = "process2"
    app.vm.network :private_network, ip: "192.168.60.12"
    app.vm.provider :virtualbox do |v|
      v.memory = 6144
    end
  end

  config.vm.define "index1" do |app|
    app.vm.hostname = "index1"
    app.vm.network :private_network, ip: "192.168.60.13"
  end

  config.vm.define "index2" do |app|
    app.vm.hostname = "index2"
    app.vm.network :private_network, ip: "192.168.60.14"
  end

  config.vm.define "quorum" do |app|
    app.vm.hostname = "quorum"
    app.vm.network :private_network, ip: "192.168.60.15"
  end

  config.vm.define "control" do |app|
    app.vm.hostname = "control"
    app.vm.network :private_network, ip: "192.168.60.21"
  end

end
相关问题