commands - vagrant virtualbox
Multi VM en un Vagrantfile. ¿Podría establecer diferentes tamaños de memoria para cada uno de ellos? (4)
config.vm.define :web do |web_config|
web_config.vm.box = "saucy"
web_config.vm.host_name = "web"
web_config.vm.network "private_network", ip:"192.168.100.10"
end
config.vm.define :db do |db_config|
db_config.vm.box = "saucy"
db_config.vm.host_name = "db"
db_config.vm.network "private_network", ip:"192.168.100.20"
end
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
vb.customize ["modifyvm", :id, "--cpus", "2"]
end
Tengo config dos VM, ''db'' y ''web''. ¿Puedo establecer diferentes tamaños de memoria para diferentes VM?
Intenté usar las soluciones anteriores y me di cuenta de que en mi entorno todas las configuraciones de memoria son las mismas. Los fragmentos de código parecen tener un pequeño error tipográfico: no use config.vm.provider ...
pero use <yourConfigVariable>.vm.provider...
para establecer los valores dependientes de la máquina.
AFAIK el código correcto se vería así:
config.vm.define :web do |web_config|
web_config.vm.box = "saucy"
web_config.vm.host_name = "web"
web_config.vm.network "private_network", ip:"192.168.100.10"
web_config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "2048"]
vb.customize ["modifyvm", :id, "--cpus", "2"]
end
end
config.vm.define :db do |db_config|
db_config.vm.box = "saucy"
db_config.vm.host_name = "db"
db_config.vm.network "private_network", ip:"192.168.100.20"
db_config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
vb.customize ["modifyvm", :id, "--cpus", "2"]
end
end
La mejor manera es usar una variedad de hashes de Ruby como aquí: http://sysadm.pp.ua/linux/sistemy-virtualizacii/vagrantfile.html . Puedes definir un array como:
servers=[
{
:hostname => "web",
:ip => "192.168.100.10",
:box => "saucy",
:ram => 1024,
:cpu => 2
},
{
:hostname => "db",
:ip => "192.168.100.11",
:box => "saucy",
:ram => 2048,
:cpu => 4
}
]
Luego simplemente itera cada elemento en la matriz del servidor y define configuraciones:
Vagrant.configure(2) do |config|
servers.each do |machine|
config.vm.define machine[:hostname] do |node|
node.vm.box = machine[:box]
node.vm.hostname = machine[:hostname]
node.vm.network "private_network", ip: machine[:ip]
node.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--memory", machine[:ram]]
Vagrant también tiene accesos directos convenientes para la configuración de la memoria y la CPU que toman la siguiente forma:
config.vm.provider "virtualbox" do |v|
v.memory = 1024
v.cpus = 2
end
Entonces, en su caso, y para dar el doble de CPU y memoria a las cajas DB que a las cajas web, se vería algo así como:
config.vm.define :web do |web_config|
web_config.vm.box = "saucy"
web_config.vm.host_name = "web"
web_config.vm.network "private_network", ip:"192.168.100.10"
web_config.vm.provider :virtualbox do |vb|
vb.memory = 1024
vb.cpus = 2
end
end
config.vm.define :db do |db_config|
db_config.vm.box = "saucy"
db_config.vm.host_name = "db"
db_config.vm.network "private_network", ip:"192.168.100.20"
db_config.vm.provider :virtualbox do |vb|
vb.memory = 2048
vb.cpus = 4
end
end
2016-08-31: Respuesta actualizada para incluir todo el archivo Vagrantfile por @DarkForce.
Puede hacerlo moviendo la definición vm.provider
dentro de cada uno de los bloques vm.define
. Por ejemplo, esta configuración establece la memoria en 2048 MB para "web" y 1024 MB para "db":
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.define :web do |web_config|
web_config.vm.host_name = "web"
web_config.vm.network "private_network", ip:"192.168.100.10"
web_config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "2048"]
vb.customize ["modifyvm", :id, "--cpus", "2"]
end
end
config.vm.define :db do |db_config|
db_config.vm.host_name = "db"
db_config.vm.network "private_network", ip:"192.168.100.20"
db_config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
vb.customize ["modifyvm", :id, "--cpus", "2"]
end
end
end
Nota: este ejemplo (como muchos en los documentos de Vagrant) solo funcionará para VirtualBox. Si desea que su Vagrantfile también funcione con VMware u otro proveedor, los parámetros de personalización se enumerarán por separado. Por ejemplo:
x.vm.provider "vmware_fusion" do |v|
v.vmx["memsize"] = "3000"
end
x.vm.provider :virtualbox do |v|
v.customize ["modifyvm", :id, "--memory", "3000"]
end