2016-11-21 25 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