Usando Chef en Azure

En el post anterior (Chef y Azure) vimos como implementar un servidor de Chef en Azure, usando el marketplace de Azure para facilitar la instalación de Chef.

Hoy quier compartir como facilitar la administración y configuración de nuestros servidores usando Chef en Azure. Algunas de los ejemplos van a ser como definir algunas recetas y “ cookbooks” para poder empezar a entender como trabaja esta herramienta y como nos puede facilitar el trabajo del día a día.

Vamos a comenzar ingresando a nuestra consola de administración de Azure, ingresando como URL la dirección que nos indica Azure en los settings del cloud service.

Chef Management Console

Vamos a a ingresar las credenciales definidas anteriormente.

Despues de haber ingresado al portal, vamos a ir a la sección Administration y seleccionamos el ícono de engranaje, que nos va a desplegar un menú con opciones. De esas opciones, seleccionamos Starter Kit.

Menu desplegado

Posteriormente seleccionamos el botón Download Startet Kit y seleccionamos de la advertencia que nos sugiere el botón Proceed.

Starter Kit

Al finalizar la descarga, vamos a ir a buscar el archivo chef-starter.zip y haciendo clic derecho sobre el mismo, seleccionamos Extract All. Definimos como ruta destino la carpeta del perfil actual (por ejemplo: C:\Users\Victor). La extracción generará una carpeta llamada chef-repo.

Instalar el cliente de Chef

Ahora vamos a instalar el cliente de chef, ingresando a https://downloads.chef.io/chef-client/ cuidando de seleccionar el cliente correcto para nuestro SO.

Chef client - Windows

Al finalizar la descarga vamos a ejecutar el archivo .msi para comenzar la instalación.

Aceptamos los términos y seleccionamos siguiente para avanzar hasta las features a instalar, en esa pantalla seleccionamos todas las opciones:

Chef client - all features selected

Abrir el explorador y navegar hasta la carpeta extraída anteriormente (C:\Users<user-name>\chef-repo.chef). Si revisamos los archivos, tiene que incluír los siguientes archivos:

  • -validator.pem
  • .pem
  • knife.rb

Modificar el archivo knife.rb, cambiando el valor del la propiedad chef_server_url, en donde vamos a definir la URL actual de nuestro servidor Chef. Luego agregar la siguiente línea:

ssl_verify_mode :verify_none

Nuestro archivo knife.rb se tiene que ver mas o menos así:

knife.rb

Ahora vamos a crear un nuevo archivo, dentro de la C:\Users<user-name>\chef-repo.chef.

Recomendación: Unsar algún editor de texto del tipo Atom, Sublime Text, VS Code o Notepad++ para poder manipular mejor los archivos que son de texto, como por ejemplo los que tienen extensión .rb (Ruby).

Vamos a agregar la siguientes líneas:

log_level        :info
log_location     STDOUT
chef_server_url  "https://siteurl.cloudapp.net/organizations/azurechef"
validation_client_name "azurechef-validator"
validation_key "{current_dir}/azurechef-validator.pem"
client_key "{current_dir}/demouser.pem"
ssl_verify_mode :verify_none

Donde “ siteurl” es el nombre de nuestro server (que conforma la URL del sitio). Vamos a guardar este archivo con el nombre:

client.rb

Teniendo el archivo creado, vamo a ejecutar los siguientes comandos:

cd C:\Users\nombre_usuario\chef-repo
knife ssl fetch

knife ssl fetch

Descargar e instalar Cookbooks

Los Cookbooks de Chef se pueden descargar manualmente desde https://supermarket.chef.io/. Éste repositorio de cookbooks es creado y mantenido por la comunidad de Chef.

Vamos a abrir una consola de PowerShell usando el Run as Administrator. Para ejecutar los comandos debemos estar ubicados en la ruta C:\Users\nombre_usuario\chef-repo

Para este ejemplo vamos a usar el cookbook learn_chef_iis que nos permite instalar y realizar una configuración mínima en el IIS.

Vamos a ejecutar:

knife cookbook site download lear_chef_iis
tar -zxvf learn_chef_iis-0.2.0.tar.gz -C cookbooks
rm learn_chef_iis*.tar.gz

Download cookbook

Con el código anterior vamos a descargar el cookbook, vamos a extraerlo y luego eliminar el archivo original.

Luego de extraer el cookbook, vamos a subirlo a nuestro servidor Chef usando el siguiente comando:

knife cookbook upload learn_chef_iis

Cookbook upload

Ahora podemos verificar este proceso, ingresando desde un navegador a la URL del servidor de administración de Chef

https://[SITE URL].cloudapp.net

Luego de haber iniciado sesión, vamos a la pestaña Policy para verificar que se haya realizado la subida correctamente.

Chef Management Console - Policy

Bootstrapping usando Azure

Vamos a ver como implementar el cookbook learn_chef_iis desde Azure usando las Chef Client plugin extensions.

Primero vamos a generar una máquina virtual desde el portal de Azure. Para el ejemplo elegí una imagen con Windows Server 2012 R2 Datacenter:

Windows Server 2012 R2 Datacenter

En las propiedades de la VM, vamos a completar el hostname, el usuario y contraseña, el tipo de VM (yo lo cambié para uno básico porque es solo un ejemplo). Dentro de las configuraciones opcionales, vamos a elegir el Resource Group que ya tenemos para nuestro servidor de administración y vamos a indicarle una extensión. Ésta extensión va a ser relacionada con el cliente de Chef.

Configuración VM nueva

Dentro de las propiedades de la extensión del cliente vamos a subir los archivos que estuvimos manipulando hace unos minutos:

  • En Validation Key, vamos a subir el azurechef-validator.pem
  • En Client RB, vamos a subir el client.rb

Ambos archivos se encuentran en la ruta C:\Users\nombre_usuario\chef-repo.chef.

En el campo Run List vamos a ingresar el nombre del cookbook que queremos asociar, en este caso learn_chef_iis.

Extensión del cliente de Chef

Posteriormente vamos a la sección de Endpoint Configuration y vamos a agregar 2 puertos para poder acceder de manera remota; el HTTP y HTTPS:

Endpoint configuration

Al finalizar la implementación de la VM en Azure, se puede revisar en la consola de Chef que ya hay actividad relacionada con el cookbook; aparece como ejecutado con un success como status.

Para verificar si realmente se instaló el rol de IIS, basta con navegar tomando la URL desde las propiedades de la VM (DNS Name). Como resultado se va a desplegar un hello world gracias a la configuración del cookbook.

Y todo usando Chef en Azure.

Saludos,

Comments