Aprovisiona tu máquina virtual con Vagrant

Provisioning” con Vagrant

En esta entrada te voy a enseñar como aprovisionar una máquina virtual con Vagrant de una forma muy sencilla.
En esta entrada no hablo de que es Vagrant ni de sus configuraciones básicas, para esto puedes echar un vistazo a la web oficial.
El ejemplo lo voy a hacer con sistemas GNU/Linux y VirtualBox.


Descripción de aprovisionamiento

Para Vagrant, el aprovisionamiento es la forma de instalar software y alterar configuraciones automáticamente al instalar una máquina virtual.

Por ejemplo, puedes usar esto para tener preparados unos archivos que al ejecutarse te instalen una máquina virtual con diferentes servicios instalados y configurados como mysql, apache, ldap, dns, etc.
Con esto, consigues poder borrar las veces que quieras la máquina sin tener que volver a instalarlo todo, mejorar en velocidad de configuración y que no te importe tener que portar esta máquina a otro dispositivo, entre otras cosas.

 

Fichero Vagrantfile

El fichero Vagrantfile, es donde decides todas las configuraciones que va a tener tu máquina virtual.
En Vagrant, hay diferentes tipos de aprovisionamiento. En este caso yo lo voy a hacer con un script en Bash.

Para esto, tienes que añadir la siguiente línea al final del Vagrantfile antes del “end” final:

config.vm.provision "shell", path: "script.sh"

 

Ejemplo de un Vagrantfile entero:

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/trusty64"
  
  # hosname
  config.vm.hostname = "server.estamosrodeados.com"
  
  # red solo-anfitrion
  config.vm.network "private_network", ip: "192.168.56.100"
   
  # hardware
  config.vm.provider "virtualbox" do |vb|
     vb.memory = "1024"
     vb.cpus = 1
  end
  config.vm.provision "shell", path: "script.sh"
end

 

Lo que hace esta línea es indicar que vas a hacer aprovisionamiento a través de un script externo y vas a llamar a este script “script.sh”, y que va a estar en el mismo directorio que el Vagrantfile.

 

Aprovisionamiento por Shell

Ahora tienes que crear un fichero llamado “script.sh” y añadir todos los comandos para instalar servicios de forma automática y o cambiar configuraciones. 

Pongo algunos ejemplos:

vim script.sh
#!/bin/bash
# Instalar servicios
apt update -y
apt install -y apache2
# Crear usuario
useradd -p $(openssl passwd laia) -d /home/laia -m -s /bin/bash laia
passwd -e laia

 

Es importante, que todos los comandos a ejecutar no necesiten la interacción del usuario, ya que si no, va a fallar. Es aquí donde yo creo que radica la dificultad, en averiguar como instalar todos los servicios que quieras sin ninguna interacción con el usuario, como por ejemplo, la típica pregunta de “Introduce la contraseña de administración”.

 

Ahora solo hace falta levantar la máquina virtual para que al instalarse también instale un Apache y cree un nuevo usuario.

vagrant up && vagrant ssh

 

Es importante, saber que el aprovisionamiento solo se ejecuta al crear la máquina, todas las demás veces que inicies la máquina virtual no se ejecutará este script. Para forzar esta ejecución en el momento que quieras puedes ejecutar:

vagrant provision

 
Con esto, deberías poder instalar casi todos los servicios de forma desatendida.

 

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 *