AWS CloudFormation ofrece a desarrolladores y administradores de sistemas un método sencillo de crear una colección de recursos de AWS relacionados entre sí para aprovisionarlos de una manera ordenada y predecible. Los siguientes artículos y documentos ofrecen recomendaciones para la creación de plantillas y el uso de las distintas características de AWS CloudFormation para aprovisionar sus recursos de AWS.
AWS CloudFormation Designer es una herramienta visual que permite crear y modificar plantillas de CloudFormation arrastrando elementos en la interfaz. La herramienta permite añadir, modificar o eliminar fácilmente los recursos y, al hacerlo, el código JSON subyacente se modifica en consonancia. Si modifica una plantilla asociada con un stack en ejecución, puede actualizar este de modo que se corresponda con la plantilla.
AWS CloudFormation ofrece una forma fácil de crear el conjunto de recursos, como la instancia de Amazon EC2, las instancias de bases de datos de Amazon RDS y los Elastic Load Balancer necesarios para ejecutar su aplicación. La plantilla describe qué recursos necesita y AWS CloudFormation se encarga de ello suministrando los recursos de manera ordenada y previsible, manipulándolos y recuperando ante errores o problemas. Aunque AWS CloudFormation se encargue de aprovisionar todos los recursos, surge la pregunta obvia de cómo se implementa, configura y ejecuta su software de aplicación en las instancias de Amazon EC2. Existen muchas opciones, de las cuales depende la rapidez con que su aplicación esté lista o la flexibilidad a la hora de implementar nuevas versiones del software.
AWS CloudFormation puede ayudarle a configurar o instalar la aplicación y a arrancar las herramientas de implementación y administración que pueda estar utilizando en su entorno. Chef es una solución de automatización de infraestructura de código abierto de Opscode, escrita en Ruby, que permite automatizar la configuración de sus sistemas y las aplicaciones que se asientan sobre él. AWS CloudFormation y Chef se pueden conjugar para automatizar todos los procesos de implementación y administración, desde los recursos de AWS hasta los artefactos de aplicación.
AWS CloudFormation puede ayudarle a configurar o instalar la aplicación y a arrancar las herramientas de implementación y administración que pueda estar utilizando en su entorno. Puppet es una plataforma de código abierto para aprovisionar, configurar y aplicar revisiones a las aplicaciones y componentes del sistema operativo. AWS CloudFormation y Puppet se pueden conjugar para automatizar todos los procesos de implementación y administración, desde los recursos de AWS hasta los artefactos de aplicación.
El lanzamiento de AWS CloudFormation representa otro importante paso para facilitar a los clientes la implementación de aplicaciones en la nube. A menudo, una aplicación requiere la creación de varios recursos de infraestructura, y AWS CloudFormation ayuda a los clientes a crear y administrar estos conjuntos de recursos de AWS de una manera sencilla y predecible. Se pueden utilizar plantillas declarativas para crear stacks de recursos, con la seguridad de que se crean todos los recursos en el orden adecuado y con la confirmación correspondiente.
A día de hoy, muchos clientes han utilizado AWS en lo que se podría denominar "modalidad de cocina". Lanzan instancias, asignan direcciones de Elastic IP, crean colas de mensajes, etcétera. En ocasiones se trata de procesos semiautomáticos con ayuda de scripts o plantillas, mientras que otras veces el proceso es manual. A medida que aumenta la complejidad general de los sistemas, lanzar la combinación adecuada de AMI, asignarlas a funciones de usuario, afrontar los errores que surjan y colocar todas las piezas móviles en el lugar exacto resulta cada vez más complicado. Ahora, todos los que cocináis podéis convertiros en auténticos chefs.
Este artículo explica cómo puede utilizarse la AMI de Linux de Amazon junto a AWS CloudFormation para poner en marcha y configurar una aplicación dinámicamente, en el momento en que arranca. El ejemplo utiliza el recurso WaitCondition, compatible con AWS CloudFormation, para esperar a que se produzca la configuración y el lanzamiento de una aplicación de Ruby on Rails antes de considerar que un stack se ha creado de forma satisfactoria. El ejemplo también aprovecha la compatibilidad de la AMI de Linux de Amazon con Cloud-init, una aplicación de código abierto creada por Canonical. Cloud-init permite utilizar el parámetro UserData de Amazon Elastic Compute Cloud (Amazon EC2) para especificar qué acciones se deben ejecutar al arrancar la instancia.
En esta breve presentación se muestra la necesidad de organizar y automatizar el aprovisionamiento en la nube.