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 鈥渃ookbooks鈥 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 鈥渟iteurl鈥 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