Wed, 2013/07/03 - 23:08

vagrant

Sí eres de los que haz oído sobre vagrant, pero no sabes muy bien si se trata de un software o una nueva hamburguesa en tu burger mas cercano, creo que este es el momento para saber que es.

Vagrant es: (Aquí viene descripción dummy)

Una maquina virtual portable. Te da la habilidad de compartir maquinas virtuales de una forma fácil y simple. Genial para entornos de desarrollo y si eres muy friki hasta puedes usarlo para servidores de producción.

Getting in

Entrando en lo que es vagrant y como usarlo. La instalación la dejaremos de lado ya que es sencilla y no tiene mucha complicación. Primero necesitamos una box (la box es el zip de las maquinas virtuales) luego de tener la box iniciamos la maquina virtual y listo, suena simple, es simple.

vagrant init precise64 http://files.vagrantup.com/precise64.box

Este comando descarga el box, en este caso Ubuntu precise 64, con la etiqueta de precise64, una vez descargada y agregada a la lista de boxes vagrant box list vagrant inicia el proceso de encendido de la maquina virtual y su configuración de entorno

vagrant up
vagrant reload
vagrant halt

Estos son los comandos básicos que usamos en vagrant. Esto inicia, reincia, apaga las maquinas virtuales. Son los mas usados y el "vagrant destroy" es el quizá por excelencia para los que esten creando boxes.

Deep deeper

Con vagrant podemos pasar al código y configurar lo que será una maquina virtual, el fichero core es Vagrantfile ahí encierra toda la magia. Podemos tener un Vagrantfile y sin tener box ni nada hacer un vagrant up y tener la maquina virtual corriendo, el resto se encarga el mágico fichero. Este método hace muy fácil el compartir maquinas virtuales.

Chef

Ahora esto es lo básico pero si queremos exprimir al máximo tenemos que usar vagrant con un software extra. Voy a comentar muy por encima Chef este programa permite crear recetas de servidores convirtiendote en un chef de servidores, añadiendo ingredientes a tu cookbook para hacer el mas sabroso servidor jamas visto (todo esto sin ayuda de estupefacientes) yo todavía estoy iniciandome en chef y crear recetas. Chef se escribe en ruby, si no conoces ruby eso no es ningún inconveniente siempre y cuando conozcas otro lenguaje de programación como HTML(esto es trolling), puedes facilmente leer y escribir ruby, lo mejor, nunca diras "m###da faltaba un ;" ruby no los usa.

Entonces en el Vagrantfile agregamos lo que será el index de receta, en donde le diremos al servidor que hacer. Un ejemplo de Vagrantfile puede ser este.

Vagrant.configure("2") do |config|

config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"

config.vm.network :private_network, ip: "192.168.33.101"

config.vm.network :forwarded_port, guest: 80, host: 8080
config.vm.network :forwarded_port, guest: 3306, host: 3306

config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "512"]
end

config.vm.synced_folder "./", "/vagrant", id: "vagrant-root"

config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks"
chef.add_recipe "apt"
chef.add_recipe "nginx"
chef.add_recipe "percona::server"
chef.add_recipe "php-fpm"
chef.add_recipe "drush"
end

end

Como ven, no hay ; al final de cada linea. En la linea del código que dice "config.vm.provision :chef_solo do |chef|" es en donde empieza a leer las recetas y agregarlas al caldero ... servidor. Dentro de cada receta hay default.rd este es el index.html de chef para empezar a leer las recetas. No voy a ir mucho mas allá con chef en este post, porque si no no tendría para escribir el siguiente y esa no es la idea, el hype es lo que se lleva hoy en día. Importante, chef se ejcuta en el virtualbox o guest host.

Pero si quieren echar un ojo y seguir investigando sobre vagrant / chef les dejo el enlace a mi repo de vagrant chef que la principal idea es crear entornos de desarrollo para Drupal. Usa nginx, percona, php-fpm, drush.

git clone git@github.com:killua99/vagrant-precise.git precise64