Vagrant y ansible

Una combinación explosiva

1ª parte: Vagrant

Alberto Molina Coballes / @alberto_molina y José Domingo Muñoz Rodríguez / @Pledin_JD

Cambio de paradigma

Maneja tu infraestructura como tu software

  • Utiliza software de control de versiones para las configuraciones y especificaciones
  • Todo debe ser legible
  • Automatiza

DevOps...¿Esoqueloqué?

Vagrant. Introducción

  • Aplicación libre desarrollada en ruby para crear de forma sencilla un entorno de trabajo complejo
  • El objetivo principal es aproximar los entornos de desarrollo y producción.
  • Utiliza un entorno de máquinas virtuales (Virtualbox por defecto)
  • Herramienta imprescindible para devops
  • Potente uso didáctico
  • Su lema:

Development environments made easy: Create and configure lightweight, reproducible, and portable development environments.

Vagrant. Instalación

  • Instalar virtualbox
  • Instalar vagrant (descargar de http://vagrantup.com)
  • Notas:
    • Es posible utilizar otros proveedores, pero el mejor documentado es virtualbox.
    • Existen versiones de vagrant para GNU/Linux, Apple OS X y Ms Windows
    • Vagrant tiene un fuerte desarrollo, por lo que hay bastantes diferencias entre versiones
    • En Debian Wheezy se incluye vagrant 1.0.3, mientras que la ultima versión disponible (Marzo 2014) es 1.5.1
    • Si empiezas ahora es recomendable utilizar vagrant ≥ 1.2.0 porque se ha modificado la API a la versión 2

Vagrant. Vagrantbox

  • Un box es una máquina virtual empaquetada.
  • Vagrant proporciona algunos boxes oficiales, con idéntica clave ssh por lo que no son válidos para entornos en producción
  • Listado incompleto y no oficial de boxes http://www.vagrantbox.es
  • Siempre es posible hacerse un box a medida, aunque en la mayor de los casos no es necesario
  • Para poder utilizar un box es necesario agregarlo al equipo:
	
vagrant box add {title} {url}
		
  • En el caso de sistemas UNIX, esto hace que se descargue y descomprima el box en ~/.vagrant.d/boxes/

Vagrant. Vagrantfile

  • Un fichero de nombre Vagrantfile describe una o varias instancias para crear un entorno vagrant en el directorio en el que se encuentre.
  • Se pueden tener varios entornos vagrant independientes, ubicando ficheros Vagranfile en diferentes directorios.
  • Se puede crear un Vagrantfile mínimo con:
  • 
    vagrant init
    		

Vagrant. Ejemplo de Vagrantfile

	
	       
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
   config.vm.box = "precise32"
   config.vm.network :private_network, ip: "10.1.1.2"
end
	       
	       

Vagrant. Utilización básica

Todas las instrucciones se aplican sobre el Vagrantfile del directorio en el que se ejecuten

  • Levantar el entorno
  • 	
    vagrant up
    	       
  • Recargar el entorno (reinicia las máquinas y aplica los cambios):
  • 	
    vagrant reload
    	       

Vagrant. Utilización básica (2)

  • Acceder a la instancia:
  • 	
    vagrant ssh [nombre_instancia]
    	      
  • Suspender, apagar o destruir:
  • 	
    vagrant suspend
    vagrant halt
    vagrant destroy