Cloudformation parameters

Ventajas de parametrizar plantillas de Cloudformation

Por Josué Armando Vazquez, Infrastructure DevOps en Financial Solutions

AWS CloudFormation es un servicio que nos ayuda a crear recursos de AWS de una manera más rápida, de tal forma que se reduce considerablemente el tiempo de despliegue de infraestructuras.

Existen varias plantillas predeterminadas y creadas por Amazon que sirven para replicar entornos complejos para el desarrollo, ya sea en pre o producción, pueden ser similares o prácticamente iguales simplemente escalando los recursos. Para consultar estas plantillas de ejemplo, es necesario revisar la siguiente liga: https://amzn.to/2SfY3Vm

El uso de estas plantillas va a depender del requerimiento que tengamos, no es obligatorio utilizarlas, ya que se puede crear un script de CloudFormation desde cero en formato YAML o JSON.

Algunas de las ventajas de utilizar plantillas predeterminadas son:

· El tiempo de codificación es menor a crear una plantilla de cero, ya que algunas, no podrían estar parametrizadas con las configuraciones que necesitamos en ese momento y tendríamos que invertir tiempo en modificarlas.

· Al no requerir modificar las configuraciones, que vienen por default de los recursos de estas plantillas, el despliegue es rápido y en cuestión de minutos tendremos nuestro servicio desplegado, contemplando que cada servicio tiene su propio tiempo de creación.

Sin embargo, una ventaja al poder personalizar nuestras plantillas es añadir variables de entorno, las cuales nos facilitan la creación de nuestros recursos. Es importante mencionar que pueden crearse de manera genérica y así podemos utilizarlas en algún otro ambiente que deseemos crear o replicar.

Para crear nuestras variables de entorno, es necesario que nuestra plantilla tenga la sección de parameters como se muestra a continuación:

Estos serían los requisitos que se deben de tomar en cuenta al momento de usar los parámetros:

  • Se puede tener un máximo de 200 parámetros en una plantilla de AWS CloudFormation.
  • Cada parámetro debe recibir un nombre lógico (también llamado ID lógico), este tiene que ser alfanumérico y único entre todos los nombres lógicos dentro de la plantilla.
  • A cada parámetro se le debe asignar un tipo de parámetro compatible con AWS CloudFormation.
  • A cada uno se le debe asignar un valor en tiempo de ejecución para que AWS CloudFormation aprovisione correctamente la pila. Si lo deseas, es posible especificar un valor predeterminado para que AWS CloudFormation lo use, a menos que se proporcione otro valor.
  • Los parámetros deben ser claros y se debe de hacer referencia a ellos desde la misma plantilla.

De esa forma, se volvería una sección “personalizada” y debería de verse como se muestra a continuación:

En formato YAML:  

En formato JSON:

De esta forma, podemos reutilizar nuestras plantillas cuantas veces queramos y al ejecutarlas, CloudFormation identificará estas variables solicitándolas como en el paso 2.

Para poder utilizar estas variables o parámetros a lo largo de nuestra plantilla, es necesario utilizar la palabra reservada “REF”. De esta manera, se le específica a CloudFormation que debe utilizar ese parámetro.

Aquí se muestra un ejemplo de cómo sería en formato JSON o YAML:

En esta imagen se muestra cómo es que se da de alta en la sección de parámetros:

En esta nos muestra como luce la referencia hacia la variable en formato JSON:

Y esta, nos muestra como luce la referencia hacia la variable en formato YAML:

La importancia de personalizar nuestras plantillas de CloudFormation es mucha, ya que, al realizarlo de esta manera, podemos tener bien organizados los valores que necesitamos a lo largo de nuestro YAML o JSON. También, nos permite reutilizar nuestras plantillas, sin la necesidad de editar estos archivos.

Utilizar CloudFormation en el momento de crear o clonar recursos, nos ahorra tiempo, trabajo y configuraciones.

¡Cuéntame si te funciono y comenta si te gustarían algunos otros tutoriales!

Related Post

Contactar a un especialista

[contact-form-7 404 "No encontrado"]