Wed, 2013/07/03 - 23:08
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 https://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 = "https://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