2016-11-21 6 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, но я бы идеально сделал это в разделах 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 в блоке виртуального блока, поскольку это зависит от виртуального бокса (бродяга может управлять другим провайдером и это было бы иначе)
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 

 Смежные вопросы

  • Нет связанных вопросов^_^