Añadir un segundo disco duro con Vagrant y Virtualbox

En esta entrada, aprenderás a añadir mas de un disco duro virtual a tu máquina gestionada con Vagrant.

El otro día, estaba haciendo pruebas con LVMs y me di cuenta de que no tenía ni idea de como añadir mas de un disco duro con Vagrant. Me puse a hacer pruebas y a buscar información por Google, pero no encontré nada que me lo explicara de una forma algo detallada, lo máximo que encontré fueron directamente algunos ejemplos, por esto, creo que si tienes el mismo problema que yo, esta entrada puede ayudarte a lograr añadir mas de un disco con Vagrant y a saber un poco que demonios estás haciendo para lograrlo.

Todo lo que explico en esta entrada, lo hago pensando en que ya tienes nociones básicas de Vagrant.

 

Antes de todo, decir, que añadir un nuevo disco duro con Vagrant, es muy parecido a hacerlo directamente en modo texto con VirtualBox.

 

Añadir nuevo disco virtual

Las configuraciones necesarias para añadir un nuevo disco virtual, las tienes que hacer en el fichero de configuración de Vagrant (Vagrantfile).

Pongo un ejemplo de las lineas por separado necesarias para añadir nuevos discos.
A continuación de estas, pondré un ejemplo de un fichero de configuración real y funcional.

disk = './disks/disk.vdi'

if not File.exist?(disk)
       vb.customize ['createhd', '--filename', disk, '--variant', 'Fixed', '--size', 10 * 1024]
end

vb.customize ['storageattach', :id,  '--storagectl', 'SATAController', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', disk]

 

La línea 1 crea una variable con la dirección donde va a estar el fichero virtual (.vdi) del disco duro a crear, esta variable se utiliza posteriormente.

En las líneas 3 y 5 hay un simple “if” para comprobar si el fichero .vdi del disco duro existe o no, si este existe, pasa al siguiente paso sin realizar la acción.

En la línea 4 es donde se va a crear el nuevo disco duro virtual. En este comando es donde tienes que indicar la variable anteriormente creada (disk). También, si quieres, puedes escoger si el disco va a ser dinámico o fijo y el tamaño del disco. En este caso el disco tiene formato fijo y un tamaño de 10GB (10 * 1024).

La línea indica el controlador en el que se va a conectar el disco duro. Como en el anterior caso, también podemos personalizar las opciones para moldearlas como queramos.
Es importante que, si queremos añadir mas de un disco duro, tenemos que poner un puerto (–port’, 1) diferente para cada disco.

Blog interesante donde he encontrado información sobre la creación de DDV en VirtualBox.

 

Ejemplo Vagrantfile funcional

Pongo un ejemplo de un fichero Vagrantfile funcional para que puedas ver lo anteriormente mostrado en un ejemplo y para que puedas utilizarlo directamente con un copia y pega.

 
disk = './tmp/disco.vdi'
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.hostname = "server.estamosrodeados.com"
  config.vm.network "private_network", ip: "192.168.56.100"
  config.vm.provider "virtualbox" do |vb|
     vb.memory = "1024"
     vb.cpus = 1

     #Añadir discos
     if not File.exist?(disk)
       vb.customize ['createhd', '--filename', disk, '--size', 10 * 1024]
     end
     vb.customize ['storageattach', :id,  '--storagectl', 'SATAController', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', disk]
  end
end

 

Ejemplo añadiendo dos discos

Pongo otro ejemplo, esta vez añadiendo mas de un disco, para que puedas ver como funciona.

 
disk = './tmp/disco.vdi'
disk2 = './tmp/disco2.vdi'

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.hostname = "server.estamosrodeados.com"
  config.vm.network "private_network", ip: "192.168.56.100"
  config.vm.provider "virtualbox" do |vb|
     vb.memory = "1024"
     vb.cpus = 1

     #Añadir discos
     if not File.exist?(disk)
       vb.customize ['createhd', '--filename', disk, '--size', 10 * 1024]
     end
     vb.customize ['storageattach', :id,  '--storagectl', 'SATAController', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', disk]
     if not File.exist?(disk)
       vb.customize ['createhd', '--filename', disk, '--size', 10 * 1024]
     end
     vb.customize ['storageattach', :id,  '--storagectl', 'SATAController', '--port', 2, '--device', 0, '--type', 'hdd', '--medium', disk]
  end
end


Como he comentado antes, es importante poner un puerto diferente para cada disco, si no, solo detectará 1.

 

Con todo lo explicado, ya deberías poder configurar mas de un disco duro virtual en tu máquina con Vagrant, si no es así, no dudes en pedir ayuda en los comentarios.

Imagen de portada sacada de www.vagrantup.com

Hèctor

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *