Wie kann ich mit einer Vagrantfile eine RedHat-VM und eine Ubuntu-VM erstellen?

Wie kann ich mit einer Vagrantfile eine RedHat-VM und eine Ubuntu-VM erstellen?

Unten ist mein Vagrantfile. Anstatt jedoch 1 RedHat-VM und 2 Ubuntu-VMs zu erstellen, werden 3 Ubuntu-VMs „vagrantiert“.

Kann mir jemand sagen, warum? Vielen Dank im Voraus!

Vagrant.configure("2") do |config|
  config.ssh.insert_key = false
  config.vm.synced_folder ".", "/vagrant", disabled: true
  config.vm.provider :virtualbox do |v|
    v.memory = 4000
    v.linked_clone = false
  end

# App server 1   
config.vm.box = "geerlingguy/centos7"
  config.vm.define "app1" do |app|
    app.vm.hostname = "orc-app1.test"
    app.vm.network :private_network, ip: "192.168.60.4"
  end

# App server 2   
config.vm.box = "geerlingguy/ubuntu2004"
  config.vm.define "app2" do |app|
   app.vm.hostname = "orc-app2.test"
    app.vm.network :private_network, ip: "192.168.60.5"
  end

# DB server   
config.vm.box = "geerlingguy/ubuntu2004"
  config.vm.define "db" do |db|
    db.vm.hostname = "orc-db.test"
    db.vm.network :private_network, ip: "192.168.60.6"
  end
end

Antwort1

Sie konfigurieren die Box an der falschen Stelle und überschreiben mehrmals die für jede Instanz verwendete Standardbox. Folgendes sollte Ihr Problem beheben und Ihre Anforderungen erfüllen:

Vagrant.configure("2") do |config|

  config.ssh.insert_key = false
  
  # These are the defaults applied to all VMs unless overridden
  config.vm.synced_folder ".", "/vagrant", disabled: true
  config.vm.box = "geerlingguy/ubuntu2004"  # Set as a default box since reused.
  config.vm.provider :virtualbox do |v|
    v.memory = 4000
    v.linked_clone = false
  end

  # Specific config for App server 1
  config.vm.define "app1" do |app|
    # Override box for this specific vm
    app.vm.box = "geerlingguy/centos7"
    app.vm.hostname = "orc-app1.test"
    app.vm.network :private_network, ip: "192.168.60.4"
  end

  # Specific config for App server 2   
  config.vm.define "app2" do |app|
    app.vm.hostname = "orc-app2.test"
    app.vm.network :private_network, ip: "192.168.60.5"
  end

  # Specific config for DB server 
  config.vm.define "db" do |db|
    db.vm.hostname = "orc-db.test"
    db.vm.network :private_network, ip: "192.168.60.6"
  end

end

Randnotiz: Da Sie mindestens zwei VMs haben, die auf demselben Image basieren, würden Sie wahrscheinlich von der Verwendung profitieren v.linked_clone = true. Dies würde höchstwahrscheinlich die erste Erstellung Ihrer VMs und die anschließende Zerstörung/Neuerstellung beschleunigen.

verwandte Informationen