CloudFormation

CloudFormation es una forma declarativa de definir la Infraestructura AWS, incluyendo cualquier tipo de recurso y configuración.

Características Principales

  • No se crea ningún recurso de forma manual
  • El código puede estar bajo un sistema de control de versiones (Git?)
  • Los cambios en la Infraestructura se aplican mediante código
  • Se puede estimar el coste de los recursos a partir de la plantilla de CloudFormation
  • Cada recurso en un stack se etiqueta correctamente, para identificar cuanto cuesta cada stack desplegado con CloudFormation
  • Las plantillas se suben a S3 y después se enlazan desde CloudFormation
  • No se puede editar una plantilla, se crea una nueva versión
  • Borrar un stack, implica borrar todos los recursos creados por CloudFormation

Componentes de la plantilla

  • Recursos: los recursos a desplegar en AWS (esta parte es obligatoria)
  • Parametros: entrada dinámica de la plantilla
  • Mappings: variables estáticas de la plantilla (se utiliza !FindInMap para encontrar el valor de una de estas variables en la plantilla)
  • Outputs: referencias a los recursos creados (No se puede eliminar un Stack si sus Outputs están referenciadas desde otro Stack)
  • Conditionals: condiciones para crear recursos. Por ejemplo si el entorno es uno determinado (dev, prod, test) o la Región es una concreta.
  • Metadata

Para ayudar a crear la plantilla existen:

  • Referencias
  • Funciones

Funciones

Algunas funciones principales:

  • Fn::Ref: Para un parámetro, devuelve su valor. Para un recurso, devuelve su ID
  • Fn::GetAtt: Devuelve el atributo elegido de un determinado recurso
  • Fn::FindInMap: Devuelve el valor de una variable tipo Mapping (estática)
  • Fn::ImportValue: Importa un valor que ha sido exportado en otras plantillas
  • Fn::Join: Concatena varios valores con un delimitador concreto
  • Fn::Sub: Sustituye el valor de una variable en un string
  • Funciones condicionales (Fn::If, Fn::Not, Fn::Equals, …): Utilizada en Conditionals para expresar funciones lógicas (AND, OR, …)

Rollbacks

Por defecto, cuando algo falla se hace un rollback completo de toda la plantilla. Se puede deshabilitar el rollback por defecto, y analizar lo que ha ocurrido para producir ese error.

Cuando se actualiza un stack y falla el despliegue, se vuelve a la versión anterior que funcionaba correctamente. Se puede ver en los logs que ha ocurrido y los mensajes de error correspondientes.

StackSets

Permite crear, actualizar o borrar Stacks en múltiples cuentas y regiones AWS. Solo puede crearlas una cuenta de Administrador, y las cuentas Trusted pueden crear, actualizar o borrar instancias a partir de los StackSets.

Cuando se actualiza un StackSet, todas las instancias de ese StackSet se actualizan en todas las cuentas y regiones.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.