Provisionar entorno de desarrollo con Vagrant y Chef Zero

agosto 31, 2016 — por David Mataró0

main

ConsultoríaCPDDevOpsMetodología

Provisionar entorno de desarrollo con Vagrant y Chef Zero

agosto 31, 2016 — por David Mataró0

En el post Gestión de la configuración o Configuration Management (CM), características y beneficios vimos que uno de los beneficios de los sistemas de gestión de la configuración como Chef o Puppet es que permiten replicar entornos de forma fácil y rápida, lo que nos permite establecer flujos de trabajo a través de los diferentes de entornos idénticos (desarrollo, test, … y producción).  Por otro lado, en el post anterior Tu primer entorno de desarrollo con Vagrant vimos como crear un entorno de desarrollo utilizando Vagrant. Hoy vamos a profundizar un poquito más en la creación de entornos viendo un ejemplo de como provisionar un servidor virtual Vagrant con Chef utilizando una herramienta llamada Chef-Zero.

Chef-zero es un servidor Chef ligero que se carga en memoria RAM y que permite ejecutar el código Chef que hemos desarrollado, de la misma forma que haríamos sobre un servidor Chef.  No vamos a entrar en detalle en como funciona Chef-zero, sino que solo veremos como configurar Vagrant para que ejecute código chef durante el proceso de provisión.

Para empezar vamos a crear un pequeña estructura de carpetas y un fichero con código Chef que instalará el servidor web Apache.

Estructura de carpetas y ficheros a crear:

nodes/
cookbooks/micookbook/recipes/
cookbooks/micookbook/recipes/default.rb

El contenido del fichero cookbooks/micookbook/recipes/default.rb es el siguiente:

package ‘apache2’ do
action :install
end
service “apache2” do
action :start
end

en el fichero default.rb, el código chef describe dos acciones a realizar: primero utiliza el recurso llamado ‘package’ para indicar que se debe instalar el paquete apache2, y segundo, utiliza el recurso ‘service’ para indicar que el servicio apache2 debe estar arrancado.

Para provisionar un servidor Vagrant con Chef-zero tenemos que instalar en Vagrant un par de plugins, omnibus y vbguest. En caso de utilizar otros sistemas de provision, se deberían instalar los plugins correspondientes. Para instalar los plugins en Vagrant hay que ejecutar los comandos siguientes desde la consola:

vagrant plugin install vagrant-omnibus
vagrant plugin install vagrant-vbguest

Finalmente, tenemos que configura Vagrant para que utilice chef-zero para provisionar el servidor. Como vimos en el post anterior “Tu primer entorno de desarrollo con Vagrant”, esto se hace en el fichero Vagrantfile.

# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = “ubuntu/xenial64”
config.vm.provision “chef_zero” do |chef|
chef.cookbooks_path = “cookbooks”
chef.nodes_path = “nodes”
chef.add_recipe “micookbook”
end
end

En el fichero Vagrantfile del ejemplo configuramos que se utilice el sistema de provisión chef_zero. También configuramos en que carpeta se encuentran los cookbook – los cookbook contienen los ficheros con el código Chef -, y en que carpeta se guardara el fichero de definición del nodo o servidor virtual.  Finalmente, se indica que recipes – fichero con código Chef – se ejecutará durante el proceso de provisión.

Una vez creado el código Chef y configurado Vagrant, ya podemos arrancar el servidor virtual mediante el comando “vagrant up”. Durante el proceso de arranque, una vez creado el servidor virtual, Vagrant ejecuta el código Chef en instala el servidor web Apache. Si accedemos al servidor (vagrant ssh) podemos ver que se ha instalado apache y que el servicio de apache esta en ejecución.

Si te ha gustado visita tambien los anteriores posts:

Dejar comentario

Tu dirección de correo no será publicada Los campos requeridos están marcados con *

7 + 18 =