:::: MENÚ ::::

El mesías de Vagrant: vagrant-cachier; caché para nuestros boxes

vagrant

El pasado 6 de Junio asistí al Talle de Entornos de Desarrollo de Las Palmas DevOps, en el cual hablaron sobre #Vagrant, y fui para ver si era verdad los conceptos que me rondaban por la cabeza sobre esta herramienta.

En el taller nos enseñaron varias herramientas de virtualización como viertualenv (Python), y una vista rápida de chruby (Ruby). En el apartado de #Vagrant se nos mostró un plugin que desde mi punto de vista marca un antes y un después en la creación de entornos, y es: vagrant-cachier.

En pocas palabras, es un sistema de caché para nuestros #Vagrant ¿Qué quiero decir con esto? Imagina que tienes que realizar 5 entornos y todos ellos van con apache, lógicamente, en cada una de las instancias a través del sistema de paquetes tendrás que descargarlo e instalarlo, todo el proceso es automático, pero el hecho de descargar 5 veces el mismo paquete es redundante y aburrido por la espera de la descarga en sí, por ello vagrant-cachier almacenaría el paquete de apache en el host y cada que vez fuéramos a instalarlo recurriría a él en vez de descargarlo tantas veces.

No sólo funciona con el sistema paquete del OS, sino que se entiende con diversos sistemas de dependencia como son composer, npm, bower o rubygems entre otros.

Instalar vagrant-cachier

Instalar un plugin en #Vagrant es realmente sencillo, en nuestro caso:

$ vagrant plugin install vagrant-cachier

Vagrantfile y nuestro caché

En nuestro archivo Vagranfile tendremos que incluir la configuración que afectará a nuestro caché. El primer punto, preguntar si el plugin vagrant-cachier está instalado:

if Vagrant.has_plugin?("vagrant-cachier")
	# [...]
end

Podemos especificar en que ámbito debe trabajar nuestro caché, o sea, si queremos que afecte al box o a la máquina. Un ejemplo, si vamos a usar el box ubuntu/trusty32 con mucha frecuencia e instalaremos apache en la gran mayoría de ellos, entonces nos convendría usar el caché a nivel de box. A nivel de máquina sólo se realizaría en relación a una instancia en concreto y no se compartiría el caché con otras máquinas.

Si usáramos el caché por box deberemos usar la opción :box, en caso de elegir la máquina; :maquine, o sea;


if Vagrant.has_plugin?("vagrant-cachier")

	config.cache.scope = :box #El ámbito. También puede ser ':machine'

end

También podemos especificar que tipos de paquetes capturar, por ejemplo apt, composer, rubygem, yum, etc., decirle que capture algún sistema genérico como wget, o que vagrant-cachier se encargue de capturar lo necesario de forma automática.

La lista de gestores de paquetes disponibles para la captura la puedes encontrar en la web del plugin; http://fgrehm.viewdocs.io/vagrant-cachier, concretamente en el menú Available Buckets.

Si no especificamos ninguna opción en este sentido, vagrant-cachier entenderá que deseas que él se haga cargo de qué capturar y qué no. A modo de ejemplo, vamos a decirle que nos guarde en caché los paquetes de los gestores apt y composer, para ello deberemos decirle a vagrant-cachier que sólo nos capture los gestores que nosotros queremos:


if Vagrant.has_plugin?("vagrant-cachier")

	config.cache.scope = :box #El ámbito. También puede ser ':machine'

	config.cache.auto_detect = false #Desactivar la caché automática.
	config.cache.enable :apt #Caché de 'apt'
	config.cache.enable :composer #Caché de 'composer'

end

De este modo y de forma sencilla tendremos un sistema de caché en nuestro #Vagrant que nos evitará las esperas de las descargas de los diversos paquetes que vayamos a usar en nuestras instancias.

Si tienes más curiosidad sobre vagrant-cachier, te recomiendo que visites su web; http://fgrehm.viewdocs.io/vagrant-cachier, para ver más información sobre él y futuras implementaciones que tienen pensadas.

Share on Facebook0Tweet about this on TwitterShare on Google+1Share on LinkedIn0Share on Tumblr0Pin on Pinterest0Email this to someone