HEADER_lecciones_de_software

CloudFormation: aprende a automatizar la creación de recursos

por Sebastián Henao, el 30 de septiembre de 2019

CloudFormation: aprende a automatizar la creación de recursos

CloudFormation es un servicio de AWS que permite expresar a través de un archivo de texto todos los cambios y configuraciones que se realizan en la plataforma. De esta manera, CloudFormation es un servicio para la implementación de infraestructura como código, también conocida como IaC. 

En particular, la implementación de IaC a través de CloudFormation ofrece múltiples beneficios. Además de reducir el tiempo invertido en el aprovisionamiento y la configuración de recursos, CloudFormation también disminuye las tareas repetitivas. Dado que todo se describe a través de un archivo de texto, este puede almacenarse en un sistema de control de versiones con el objetivo de tener una trazabilidad de los cambios de la infraestructura en el tiempo. 

A continuación, aprenderemos a crear y a eliminar componentes de infraestructura utilizando CloudFormation. En particular, automatizaremos la creación de un servidor web utilizando EC2, lo que nos permitirá aprovechar el beneficio principal de IaC: reducir las labores manuales. Para esto, partamos de un par de definiciones claves en CloudFormation:

Template: 

Es un archivo de texto en formato JSON o YAML, que describe los recursos de infraestructura por crear. El archivo se compone de una una serie de campos de llave-valor. A través de estos, utilizando la sintaxis estandarizada por AWS, se definen el tipo de recurso y sus propiedades. Los templates se pueden construir de forma manual por medio de cualquier editor de texto o a través de CloudFormation Designer, un editor gráfico propio de AWS.

Stack: 

Se define como un conjunto de recursos de AWS que se pueden administrar como una unidad y que se crean a partir de templates. De esta manera, se pueden crear, actualizar o eliminar todos los recursos en una sóla operación.

Ahora, tomaremos un template que contiene la definición de todos los recursos necesarios para correr nuestro servidor web en EC2. Luego crearemos un stack de CloudFormation a partir de él. Para esto, necesitaremos una cuenta de AWS con permisos tanto en EC2 como en VPC y Cloud Formation. Además, todos los recursos estarán incluidos dentro de la capa gratuita de AWS. 

Esta guía la realizaremos en la región North Virginia (N. Virginia), que también es conocida como us-east-1. Así que, estando dentro de la consola web asociada a nuestra cuenta, el primer paso será verificar la región. Esto puedes hacerlo en la esquina superior derecha de la consola web. A continuación, ingresamos al servicio CloudFormation:

Ingresamos al servicio CloudFormation

Ahora, una vez estamos dentro del dashboard de CloudFormation, se nos presentará una lista de todos los stacks creados. Para continuar seleccionamos el botón Create Stack:

Create Stack

A continuación, debemos cargar el template a partir del cual crearemos el stack. Aquí podrás descargarlo. Para continuar, editaremos el template que acabamos de cargar en CloudFormation Designer para verificar los recursos por crear. 

Editar el template acabado de cargar en CloudFormation Designer

Moviéndonos en el espacio de trabajo de la herramienta Designer, podremos encontrar una representación gráfica de los recursos, que se compone de una VPC, una subnet, un Internet gateway, una tabla de enrutamiento, un security group y una instancia de EC2, que será nuestro servidor web. Para continuar seleccionamos el botón Create Stack. En la pantalla que se nos muestra a continuación seleccionamos el botón next.

Create Stack.

Ahora, debemos definir un nombre para el Stack y continuamos seleccionando el botón next. Se nos presentará una ventana adicional con algunos parámetros de configuración adicionales, pero en este caso aceptaremos los valores por defecto seleccionando la opción next cuantas veces se nos presente antes de llegar a la ventana de Review.

Definir un nombre para el Stack

En esta última ventana podremos revisar la configuración del stack que hemos definido y, al final de ella, encontramos el botón Create Stack.

Create Stack.

Con esto iniciaremos el proceso de creación del stack, el cual podremos monitorear a través de la pestaña Events del stack, que debemos actualizar constantemente utilizando el botón Refresh.

Pestaña de Eventos en el stack

Una vez el stack ha sido creado, podremos ver cómo su estado cambia a Create_Complete en la lista de los stacks que encontramos en el panel izquierdo del dashboard de CloudFormation.

El stack ha sido creado

En este punto, podremos ir a pestaña Resources, donde se listan todos los recursos de AWS que creamos dentro del stack. Desde allí podremos acceder directamente a la instancia de EC2 que contiene nuestro servidor web.

Resources, donde se listan todos los recursos de AWS que creamos dentro del stack.

Una vez allí, en la descripción de nuestra instancia, podremos conocer su dirección IP pública y acceder al servidor ingresando esta dirección en un navegador web. Es posible que debamos esperar un par de minutos antes de que el servidor web responda correctamente, pero, una vez esté listo, obtendremos el siguiente resultado:

Conocer dirección IP pública y acceder al servidor

Finalmente, para eliminar todos los recursos que hemos creado dentro del stack, bastará con seleccionar la opción correspondiente para eliminar el stack y, luego de confirmar que deseamos eliminarlo, AWS definirá el orden en el que eliminará los recursos para evitar conflictos por dependencias, y procederá a eliminarlos, lo cual podremos monitorear a través de la pestaña Events del stack

Eliminar todos los recursos que hemos creado dentro del stack,

Con esto hemos conseguido automatizar la creación de nuestro servidor web en EC2. Así reducimos el tiempo y la cantidad de tareas manuales requeridas para su configuración. Además, en este caso, creamos también todos los recursos de red requeridos para exponer el servidor a Internet. Esto nos muestra las ventajas de la automatización en la nube. Para aprovecharlas, pensemos siempre en la necesidad de automatizar el aprovisionamiento y la configuración de los recursos, pues esto hará que nuestras soluciones de computación en la nube sean aún más potentes.

Guía para crear una aplicación serverless en 4 pasos

Temas:Tecnologia e Innovacion

Lecciones Pragma

Lecciones en Academia Pragma

Aquí encontrarás tutoriales técnicos para que apliques en temas de desarrollo de software, cloud, calidad en software y aplicaciones móviles. 

También puedes visitar nuestro Blog con contenido actual sobre Transformación Digital, Marketing, Conocimiento de Usuario y más. 

Blog

Suscríbete a la academia

Descarga la Guía para trabajar con ambientes IBM Websphere Portal