我正在使用Vagrant创建三个主机。我想给它们命名为node01,node02和node03。
使用以下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
在虚拟机上,名称含糊不清(如ubuntu-3nodes-node01-timestamp ...)。我怎样才能确保它们只被称为node01,node02和node03
我知道我可以在config.vm.provider“virtualbox”中进行操作,但理想情况下我会在config.vm.define“node01”部分进行此操作
答案 0 :(得分: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
答案 1 :(得分: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