Vagrant.configure("2") do |config| # Configuración general de las maquinas config.vm.provider "virtualbox" do |v| v.linked_clone = true # v.synced_folder ".", "/vagrant", disabled: true # Deshabilitar sincronización de carpetas v.customize ["modifyvm", :id, "--groups", "/lab1"] # Crear todas las maquinas agrupadas en "lab1" v.customize ["modifyvm", :id, "--pagefusion", "on"] # Habilitar la compartición de paginas de memoria entre maquinas end (1..2).each do |j| ################################## # Creación de los routers cisco ################################## config.vbguest.auto_update = false # Necesario por no existir vbgest para los routers config.ssh.insert_key = false # Necesario para evitar errores de autenticacion config.vm.define "router_#{j}" do |router| router.vbguest.auto_update = false router.vm.box = "pulitux/csr1kv" router.vm.box_version = "17.03.04" router.vm.hostname = "router#{j}" router.vm.network "private_network", virtualbox__intnet: "red_#{j}", ip: "10.1.#{j}.1", auto_config: false router.vm.network "private_network", virtualbox__intnet: "red_externa", ip: "10.0.1.#{j}", auto_config: false router.vm.provider "virtualbox" do |vb| vb.name = "router_#{j}" vb.memory = "2048" end if j == 2 # Configurar todas tras crear el último router router.vm.provision "routers", type: :ansible do |ansible| ansible.limit = "routers" ansible.playbook = "provision/routers.yml" ansible.groups = { "routers" => ["router_1", "router_2"] } end end end ################################################ # Creación de las máquinas Workstations Ubuntu ################################################ config.vm.define "workstation_#{j}" do |workstation| # workstation.vbguest.auto_update = true workstation.vm.box = "ubuntu/jammy64" workstation.vm.hostname = "workstation#{j}" workstation.vm.network "private_network", ip: "10.1.#{j}.100" workstation.vm.provider "virtualbox" do |vb| vb.name = "workstation_#{j}" vb.memory = "2048" end if j == 2 # Configurar todas tras crear la última workstation workstation.vm.provision "workstations", type: :ansible do |ansible| ansible.limit = "workstations" ansible.playbook = "provision/workstations.yml" ansible.groups = { "workstations" => ["workstation_1", "workstation_2"] } end end end #################################################### # Creación de las máquinas servers Ubuntu #################################################### (1..2).each do |i| config.vm.define "server_#{j}_#{i}" do |server| server.vm.box = "ubuntu/jammy64" server.vm.hostname = "server#{j}#{i}" server.vm.network "private_network", ip: "10.1.#{j}.10#{i}" #, auto_config: false server.vm.provider "virtualbox" do |vb| vb.memory ="512" vb.name = "server_#{j}_#{i}" end if j == 2 and i == 2 # Ejecutar tras crear el último server server.vm.provision "servers", type: :ansible do |ansible| ansible.limit = "servers" ansible.playbook = "provision/servers.yml" ansible.groups = { "servers" => ["server_[1:2]_[1:2]"] } end # Ejecutar la configuración de todos los computadores server.vm.provision :ansible, after: "servers" do |ansible| ansible.limit = "computers" ansible.playbook = "provision/computers.yml" ansible.groups = { "workstations" => ["workstation_1", "workstation_2"], "servers" => ["server_[1:2]_[1:2]"], "computers:children" => ["workstations", "servers"] } end end end end end end