AWS CloudFormation

 

AWS CloudFormation


La computación en la nube introdujo una nueva forma de administrar la infraestructura. A medida que crecía la demanda de la nube de AWS, las tareas operativas y rutinarias habituales se volvieron problemáticas. La nube de AWS permitió que cualquier tipo de negocio creciera rápidamente y resolviera todas las necesidades comerciales relacionadas con la potencia informática; sin embargo, la necesidad de mantener un cierto stack de recursos era difícil.

La cultura DevOps trajo un conjunto de metodologías y formas de trabajar, y una de ellas se llama infraestructura como código. Este proceso consiste en tratar su infraestructura (red, máquinas virtuales, almacenamientos, bases de datos, etc.) como un programa informático. AWS CloudFormation se desarrolló para resolver este tipo de problema.


Características

  • CloudFormation te permite crear y aprovisionar recursos de forma reutilizable en un template.
  • CloudFormation convierte sus recursos en stacks que funcionan como unidades.
  • CloudFormation le permite controlar la fuente de su infraestructura.
  • Los templates son compatibles con JSON.




Templates

El código que define los recursos se almacena en archivos de texto denominados templates. Los Templates utilizan el lenguaje propietario de CloudFormation, que se puede escribir en notación de objetos JavaScript (JSON) o formato YAML.

Los templates contienen una descripción de los recursos de AWS que desea que CloudFormation cree, por lo que funcionan simultáneamente como documentación de infraestructura. Dado que los templates son archivos, puede almacenarlos en un sistema con control de versiones, como un bucket de S3 o en un repositorio git, lo que le permite realizar un seguimiento de los cambios a lo largo del tiempo.

Puede utilizar el mismo template para crear la infraestructura de AWS repetidamente, como para el desarrollo o las pruebas. También puede utilizar un solo template para crear muchos entornos similares. Por ejemplo,  puede utilizar un template para crear recursos idénticos para producción y entornos de prueba. Ambos entornos pueden tener la misma infraestructura: VPC, subredes, load balancers de aplicaciones, etc.) pero serán entornos separados.

Puede escribir templates para tomar opcionalmente entradas de parámetros, lo que permite personalizar los recursos sin modificar el original. Por ejemplo, puede escribir un template que solicite una etiqueta de template personalizado para aplicar a todos los recursos que CloudFormation crea. tú puede hacer que un parámetro sea opcional especificando un valor predeterminado, o puede requerir que el usuario especifique un valor para utilizar el template.


Los templates pueden tener 8 secciones principales:
  • AWSTemplateFormatVersion; Especifica qué versión de la plantilla desea utilizar.
  • Description: 
    • Esta sección sigue a la sección de versión de la plantilla
    • Las descripciones ayudan a diferenciar claramente entre plantillas
  • Metadata: Objetos JSON que proporcionan detalles sobre la plantilla.
  • Parameters
    • Valores que puede pasar justo antes de la creación de la plantilla
    • Permite personalizar plantillas
    • Puede tener valores predeterminados, así como valores permitidos
  • Mappings
    • Permite asignar claves a valores
    • Por ejemplo: puede hacer diferentes valores para diferentes regiones
  • Conditions
    • Las condiciones pueden verificar los valores antes de decidir qué hacer
    • Le permite crear diferentes recursos en la misma plantilla dependiendo de la evaluación de la condición
    • Ejemplo: puede crear diferentes entornos para el desarrollo y producción.
  • Resources
    • Aquí es donde se crean diferentes recursos, como S3, instancias EC2,  etc...
    • La única sección obligatoria
  • Outputs
    • Puede generar valores que le gustaría ver desde la consola o desde la API calls.
    • Ejemplo: puede devolver el nombre del bucket que acaba de crear en S3.


Stacks

Para aprovisionar recursos de un template, debe especificar un nombre de stack eso es único dentro de su cuenta. Un Stack es un contenedor que organiza los recursos descritos en el template.
El propósito de un template es administrar colectivamente los recursos relacionados. si elimina un template, CloudFormation elimina automáticamente todos los recursos en él. 

Esto hace que CloudFormation sea perfecto para pruebas y entornos de desarrollo que deben aprovisionarse y luego se desecha cuando ya no es necesario. Eliminar un stack ayuda a asegurarse que se eliminan todos los recursos y de que no hay recursos olvidados, se dejan persistentes, corriendo hasta cargos.



Stacks Updates

Puede hacer que CloudFormation cambie los recursos individuales de un stack. Simplemente modifique el template para eliminar, modificar o agregar recursos y, a continuación, indique a CloudFormation que realice una actualización del stack mediante la plantilla. CloudFormation actualizará automáticamente los recursos en consecuencia. Si otros recursos dependen de un recurso que ha actualizado, CloudFormation lo detectará y se asegurará de que los recursos de nivel inferior también se reconfiguran correctamente. 

Como alternativa, puede crear un conjunto de cambios. Realice los cambios deseados en el template y, a continuación, haga que CloudFormation genere un conjunto de cambios basado en el template. CloudFormation le permitirá revisar el cambios que realizará y, a continuación, puede decidir si desea ejecutar esos cambios o dejar todo como está.

Comentarios

Entradas más populares de este blog

Mejores practicas para migración de datos a Salesforce

Arquitecturas de integración

Gestión documental en Salesforce