instalar commands boxes virtualbox vagrant vagrantfile

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