Evento de Red Hat (y Azure)
El pasado Jueves 23/8 se realizó un evento de Red Hat, donde el objetivo del mismo fué hablar sobre DevOps, Automatización y PaaS organizado por AT. Tuve la suerte de que me invitaran a mostrar en vivo el uso de Ansible y Azure; los módulos disponibles junto a la manera de trabajar y como poder utilizar Ansible con plataformas Windows por medio de WinRM.
Les comparto algunas fotos de lo que fué el evento:
Y obviamente vamos a ver de que fueron las demos…
Ansible, Azure y Linux
Obviamente cuando consideramos la opción de utilizar ansible, y particularmente con Azure, el primer ejemplo de Playbook muy probablemente sea el de crear una VM. O sea que ese sería nuestro “Hello world” en Ansible, así que decidimos ir por ese camino para comenzar la demo en el evento.
Si bien la mayoría de los ejemplos consideraba primero generar un Resource Group para luego crear la VM, se decidió también agregar la tarea de generar el grupo de recursos dentro del Playbook. Para ello es necesario definir el siguiente bloque:
El código anterior representa la primer tarea del Playbook que vamos a utilizar. Algo para resaltar es el uso de variables (para el ejemplo se usó demoAnsibleRG). Esta variable me permite controlar de forma global la información que proporciono al ejecutar el Playbook, tomando relevancia real al momento de contar con una definición compleja de tareas y recursos facilitando la administración.
Bien, de lo anterior tendríamos como resultado un Resource Group llamado demoAnsibleRG en la región eastus.
Una mecanismo que se encuentra disponible para poder manejar información, es la de imprimir un mensaje como salida de la ejecución del Playbook. Se puede observar el uso de esta funcionalidad al momento de generar y asignar una IP pública:
Básicamente debemos definir una tarea e invocar debug, con el valor de msg que consideremos necesario y dentro del mensaje, llamar la variable de salida que nos interesa desplegar.
Y por último, antes de ver todo el Playbook en su totalidad, quisiera resaltar el siguiente bloque:
Simplemente revisando el nombre es suficiente para entender que estamos generando las reglas del firewall a la VM. Abrimos el puerto 22 para el servicio de SSH y el puerto 80 para un futuro web server.
De la forma anterior estamos dejando por defecto desde donde se accede (any). Para modificar esto, es necesario adicionar el parámetro source_address_prefix y definir el origen, por ejemplo una IP pública. Más información en el siguiente enlace: azure_rm_securitygroup.
Ahora que se revisó lo más destacable del Playbook, el código completo para generar una VM, donde el SO es Linux (CentOS) en Azure es el siguiente:
Instalar Nginx en Linux usando un inventario
Ahora que contamos con la base del servidor desplegado, podemos continuar con la siguiente etapa: convertir el servidor en un web server. Para ello es necesario instalar el rol correspondiente (nginx).
Antes de instalar el rol, vamos a generar una web custom, para ello creamos el siguiente archivo index.hml:
Ahora si el Playbook para instalar Nginx (llamado deployNginx.yml):
Un detalle no menor es la siguiente línea:
No es más que la definición de un inventario. En resumidas cuentas, un inventario permite agrupar servidores en base a requerimientos, SO, rol, etc. Permitiendo aplicar ciertas tareas a diferentes servidores. Como el tema es bastante extenso, se desarrollará un post sobre este tema. Para esta ocasión se utilizó el siguiente inventario definido en un archivo llamado hosts:
El valor de la IP pública deberíamos cambiarlo según la salida del primer Playbook.
Para ejecutar el Playbook con el inventario es necesario ejecutar la siguiente línea:
Y listo! se desplegará nuestro web server utilizando la web index.html escuchando por el puerto 80 (previamente publicado desde Azure con el Network Security Group).
Happy scripting!
Comments