Poco a poco con Chef en windows

Hace poco estuvimos hablando de Vagrant y de cómo crear máquinas virtuales para hacer nuestras pruebas, probar nuevas tecnologías o lo que queramos.

Pero es un poco rollo cada vez que creamos una máquina tener que instalar todo el software etc. Desde Vagrant configurando el VagrantFile se pueden hacer muchas cosas, incluso existe GUI como http://getprotobox.com/ que nos ayudan a crear Manifest con los Virtualhost de Apache2 configurados.

Pero hay veces que necesitamos algo más y para ello existen muchas soluciones hoy comentamos una de ellas Chef.

Introducción a Chef

Existen 2 versiones de Chef, una llamada Chef Server enfocado a tener una máquina como servidor de recetas a la que máquinas cliente Chef para obtener la información de configuración. Esta versión es algo compleja y quizás para empezar sea algo difícil de configurar. No obstante, más adelante podríamos abordar esta solución.

De momento vamos a utilizar Chef solo es una gran herramienta de gestión de la configuración. Con ella podremos crear clones de una máquina instalando todo lo necesario para su funcionamiento.

Por ejemplo, podemos tener recetas para instalar PHP, apache, Jenkins, graylog2,.. si no queremos crear recetas o queremos ver como se hacen aquí http://community.opscode.com/cookbooks tenemos un índice de recetas, pero de esto hablaremos más adelante 😉

Instalando Chef solo en Windows

Chef solo es una parte de Chef client, así que tendremos que instalar chef client e indicarle que no tenemos chef Server 😉

Lo primero es descargarnos el instalador de Windows (http://opscode.com/chef/install.msi) e instalarlo.

También necesitaremos tener instalados git y github para Windows. Nos tenemos que preocuparnos ya que con solo instalar http://windows.github.com/ lo tendremos todo.

Una de los quebraderos de cabeza de chef es la versión de Ruby, como el instalador trae consigo una versión de Ruby, nos ahorramos mucho trabajo al no tener que instalar Ruby en Windows.

Es una instalación normal. Todo se instala en C:/opscode y C:/chef

Una vez que esté terminada la instalación podemos chequear que se ha instalado. Con:
chef-solo –version

Como vamos a ser unos grandes CHEF de recetas, necesitamos un buen cuchillo knife es la herramienta con la que crear recetas, usuarios, …

También podemos utilizar chef-shell  una herramienta indispensable para manejar chef fácilmente.

Así que ya lo tenemos todo instalada, por eso vamos manos a la obra.

Configurando Chef-solo

Si en la línea de comandos escribimos “chef-solo” nos aparecerán mensajes indicándonos que Chef solo no está configurado.

No tenemos que preocuparnos, esto solo significa que chef no encuentra el directorio de las recetas (cookbooks).

Creando un repositorio para chef

Un repositorio para chef no es más que una carpeta en la que tener nuestras recetas.  Lo más sencillo es que descargamos el repositorio de opscode desde github https://github.com/opscode/chef-repo  y lo descomprimimos en una carpeta. Por ejemplo en C:\Desarrollo\chef-repo

Ya tenemos la estructura de carpetas creada.

Configurando knife

Para ser unos buenos cocineros necesitamos un cuchillo, con knife haremos las recetas, por ejemplo para desarrollar aplicaciones en php normalmente necesitamos apache2, php y mysql, pero  antes tenemos que configurar knife.

Creamos una nueva carpeta en chef-repo llamada “.chef” dentro de ella un archivo llamado “knife.rb” con:

current_dir = File.dirname(__FILE__)
log_level :debug
log_location $stdout
node_name "jesuslc-admin"
client_key "#{File.dirname(current_dir)}/jesuslc-admin.pem"
chef_server_url "http://localhost:4000"
cache_type 'Memory'
cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
cookbook_path ["#{current_dir}/../cookbooks","#{current_dir}/../site-cookbooks"]

Podéis descargarlo aquí

Descargando cookbooks

Vamos allá, como ya he adelantado necesitamos recetas, lo mejor es utilizar las recetas ya creadas de opscode, aunque más adelante podremos crear nuestras propias recetas 😉

Para crear aplicaciones php lo primero que necesitamos es tener un servidor a pache y la mejor manera es descargarnos la receta de opscode. Así que dentro de cookbooks tecleamos:

Knife cookbook site download apache2

Con este comando descargamos la receta de “apache2”, ahora solo tenemos que descomprimir y listo.

Hacemos lo mismo para apt (un comando que nos ayudará a instalar)

Knife cookbook site download apt

Y para mysql:

knife cookbook site download mysql

Debemos descomprimir los cooksbooks y listo, ya tenemos todas las recetas separadas.

Antes de terminar tenemos que crear un archivo llamado web.json centro de chef-repo.

En este archivo tenemos que ir escribiendo las recetas que vayamos a utilizar. En nuestro caso:

{
  "run_list": [ "recipe[apt]", "recipe[apache2]", "recipe[mysql]", "recipe[php]"] 
}

Ya tenemos todo listo, en un siguiente post veremos cómo unir Vagrant y Chef para crear entornos con los que poder desarrollar nuestras aplicaciones, probar nuevas apps, etc…

Referencias

Anuncios

Comenta la entrada

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s