2016-11-21 41 views
1

我正在使用Vagrant创建三个主机。我想给他们起名字node01,node02和node03。Vagrantfile:在单个文件中命名虚拟主机

使用以下Vagrantfile:

# -*- mode: ruby -*- 
# vi: set ft=ruby : 


Vagrant.configure(2) do |config| 

    config.vm.define "node01" do |node01| 
    node01.vm.box = "ubuntu/trusty64" 
    node01.vm.hostname = "node01" 
    end 

    config.vm.define "node02" do |node02| 
    node02.vm.box = "ubuntu/trusty64" 
    node02.vm.hostname = "node02" 
    end 

    config.vm.define "node03" do |node03| 
    node03.vm.box = "ubuntu/trusty64" 
    node03.vm.hostname = "node03" 
    end 


    config.vm.provider "virtualbox" do |vb| 
    vb.memory = "1024" 
    end 
end 

VirtualBox上的名字是神秘的(像Ubuntu-3nodes-NODE01时间戳...)。我怎样才能确保他们只是被称为node01,node02和node03

我知道我可以在config.vm.provider“virtualbox”中做,但我理想的做法是在config.vm.define“node01”部分

回答

2

你可以做这样的事情

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant.configure(2) do |config| 

    config.vm.box = "ubuntu/trusty64" 

    (1..3).each do |i| 
    config.vm.define "node0#{i}" do |node| 
     config.vm.provider "virtualbox" do |vb| 
     vb.memory = "1024" 
     vb.name = "node0#{i}" 
     end 
     node.vm.hostname = "node0#{i}" 
    end 
    end 

end 
  • 这是一些红宝石的节点上循环。
  • 框,如果它同所有的机器可以在上部区段级别定义
  • 你必须做的VirtualBox虚拟机在VirtualBox的块名称的名字,因为它依赖于VirtualBox的(流浪汉可以管理其他供应商,这将是不同的)
0

你也可以从定义节点方法分开循环。

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant.configure(2) do |config| 

    config.vm.box = "ubuntu/trusty64" 

    def define_node(config, node_number) 
    config.vm.define "node0#{node_number}" do |node| 
     node.vm.hostname = "node0#{node_number}" 

     node.vm.provider "virtualbox" do |vb| 
     vb.memory = "1024" 
     vb.name = "node0#{node_number}" 
     end 
    end 
    end 

    for node_number in 1..3 
    define_node config, node_number 
    end 
end