Reputation: 2707
I'm using Vagrant to create three hosts. I want to give them the name node01, node02 and node03.
Using the following 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
On virtualbox, the names are cryptic (like ubuntu-3nodes-node01-timestamp ...). How can I ensure they are just called node01, node02 and node03
I know I can do in the config.vm.provider "virtualbox" but I would ideally do it in the config.vm.define "node01" sections
Upvotes: 1
Views: 79
Reputation: 731
You can also separate loop from define node method.
# -*- 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
Upvotes: 0
Reputation: 53793
you can do something like this
# -*- 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
Upvotes: 2