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.
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.
Posteriormente seleccionamos el botón Download Startet Kit y seleccionamos de la advertencia que nos sugiere el botón Proceed.
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.
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:
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í:
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
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
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
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.
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:
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.
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.
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:
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