¿En qué consiste Amazon CloudFormation?
CloudFormation es un servicio que le permite modelar los recursos de AWS de forma que gaste menos tiempo manejando los recursos. Permite a las organizaciones desplegar, modificar, actualizar los recursos de una forma predecible, y aplicando control de versiones a la infraestructura AWS de la misma forma que se hace con el software.
CloudFormation permite da a los administradores de sistemas y desarrolladores una forma sencilla de crear y manejar una colección de recursos, provisionando y actualizándolos en una forma ordenada y predecible. Cuando se usa CloudFormation, se trabaja con templates y stacks.
Un template define los recursos de AWS y sus propiedades. Un template es un archivo de texto cuyo formato JSON. Estos archivos son utilizados para construir los recursos de AWS.
Cuando se usa CloudFormation es posible reutilizar los templates para montar los recursos de forma consistente y repetitiva. Solo describa los recursos una vez y después provisiones los mismos recursos sobre múltiples regiones.
Cuando se usa CloudFormation, los recursos se manejan en un stack. Se crean, actualizan y borran colecciones de recursos al crear, actualizar y borrar stacks. Todos los recursos en un stack son definidos por el template del stack. Si se crease por ejemplo un template que incluyera un grupo de AutoScaling, y ELB, una base de datos de RDS. Para crear esos recursos se crea un stack enviando el template que defina dichos recursos, y CloudFormation manejará el provisionamiento. Después de que todos los recursos han sido creados, CloudFormation reporta que su stack ha sido creado. Entonces puede empezar a utilizar los recursos en el stack. Si la creación del stack falla. CloudFormation revierte los cambios eliminando los recursos que ha creado.
Frecuentemente necesitará lanzar stacks desde el mismo template, pero con variaciones mínimas, como un VPC distinto o una AMI de una región distinta. Estas diferencias pueden ser direccionadas utilizando patrones. Se puede utilizar un patrón para personalizar aspectos del template en tiempo de ejecución cuando el stack es creado. Por ejemplo, puede pasar el tamaño de la base de datos, el tipo de instancias EC2, los puertos del servidor web a CloudFormation cuando cree el stack. Al utilizar parámetros en el template, puede utilizar un solo template para el despliegue de muchas infraestructuras con diferentes valores de configuración.
Debido a que los ambientes son de naturaleza dinámica, inevitablemente necesita actualizar los recursos del stack eventualmente. No hay necesidad de crear un nuevo stack y borrar el anterior; solo necesita modificar el stack actual. Para actualizar un stack, cree un change set enviando una versión modificada del template original del stack, valores de parámetros distintos o una combinación de ambos. CloudFormation compara el template modificado con el original y genera un changeset. El changeset lista los cambios propuestos. Después de revisar los cambios, usted puede ejecutar el changeset para actualizar el stack.
Si desea borrar un stack pero retener los recursos de este, puede utilizar una política para mantener los recursos. Si el recurso no tiene una policy para prevenir que el recurso sea borrado. CloudFormation borra el recurso por default.
Después de que todos los recursos han sido borrados. CloudFormation notifica que su stack ha sido borrado completamente. Si CloudFormation no puede borrar un recurso, el stack no será borrado. Cualquier recurso que no haya sido borrado se mantendrá hasta que pueda borrar de manera satisfactoria el stack.
¿Cuáles son los casos de uso de CloudFormation?
- Crear rápidamente un nuevo ambiente de prueba.
- Replicar configuración entre diferentes ambientes.
- Lanzar aplicaciones en una nueva región.