
Ich habe ein paar Probleme beim Bereitstellen einer Konfiguration mit mehreren Rechnern aus einer Vagrant-Datei.
VM_NAME="node"
IMAGE_NAME="centos/7"
Nodes=3
NodeMEM=4096
NodeCPU=2
NodeGUI=false
(1..Nodes).each do |i|
Vagrant.configure("2") do |config|
v_hostname=VM_NAME+"-#{i}"
config.vm.define "node-#{i}" do |node|
node.vm.box = IMAGE_NAME
config.vm.provider "virtualbox" do |vbox|
vbox.memory = NodeMEM
vbox.cpus = NodeCPU
vbox.gui = NodeGUI
vbox.name = v_hostname
end
node.vm.hostname=v_hostname
end
end
end
Meine Erwartung:der Hostname innerhalb der VM (node.vm.hostname) und der VBox-Maschinenname werden auf identische Werte gesetzt: node-1, node-2, node-3
Tatsächliche Ergebnis:(einige Zeilen aus den Netzwerkeinstellungen, Gasterweiterungen und Rsyncing-Ordnern entfernt)
#> vagrant up
Bringing machine 'node-1' up with 'virtualbox' provider...
Bringing machine 'node-2' up with 'virtualbox' provider...
Bringing machine 'node-3' up with 'virtualbox' provider...
==> node-1: Importing base box 'centos/7'...
==> node-1: Matching MAC address for NAT networking...
==> node-1: Checking if box 'centos/7' version '2004.01' is up to date...
==> node-1: Setting the name of the VM: node-3
==> node-1: Clearing any previously set network interfaces...
[...]
==> node-1: Setting hostname...
[...]
==> node-2: Importing base box 'centos/7'...
==> node-2: Matching MAC address for NAT networking...
==> node-2: Checking if box 'centos/7' version '2004.01' is up to date...
A VirtualBox machine with the name 'node-3' already exists.
Please use another name or delete the machine with the existing
name, and try again.
Der Hostname innerhalb der VM ist korrekt auf „node-1“ eingestellt und der von Vagrant verwendete Knotenname ebenfalls. Nur der Name der VBox-Maschine ist nicht richtig eingestellt.
Ich habe bereits versucht, unterschiedliche Reihenfolgen zu verwenden (Schleife von innen nach außen, VBox am Ende), Bindestriche aus dem Hostnamen zu entfernen und die Variablen identisch mit v_hostname, aber explizit für vbox_name festzulegen.
Hat jemand eine Idee, was hier nicht stimmt?
Weitere Informationen
Ich habe einen weiteren Schritt hinzugefügt, um eine sekundäre Festplatte zu erstellen und zu mounten.
vbox.customize ["createmedium", "disk", "--filename", "/mnt/sdb/VirtualBox/disks/"+v_hostname+"-ceph.vdi", "--size", "10240"]
Während der erste Knoten noch bereitgestellt wurde, konnte ich sehen, dass alle drei Festplatten (eine für jeden Knoten) bereits erstellt worden waren und die Festplatte des dritten Knotens an den ersten Knoten angeschlossen war.
Ich habe auch versucht, „--no-parallel“ zu „vagrant up“ hinzuzufügen, aber ohne Erfolg. Ich bin nicht sicher, warum die „vbox.customize“-Schritte bereits in der ersten Schleife für alle Iterationen ausgeführt werden, aber ich denke, das ist hier das Problem.
Antwort1
Ich habe das Problem gefunden.
config.vm.provider "virtualbox" do |vbox|
muss geändert werden in
node.vm.provider "virtualbox" do |vbox|
(1..Nodes).each do |i|
Vagrant.configure("2") do |config|
v_hostname=VM_NAME+"-#{i}"
config.vm.define v_hostname do |node|
node.vm.box = IMAGE_NAME
node.vm.provider "virtualbox" do |vbox|
vbox.memory = NodeMEM
vbox.cpus = NodeCPU
vbox.gui = NodeGUI
vbox.name = v_hostname
end
node.vm.hostname=v_hostname
end
end
end