AWS CloudFormation gives developers and systems administrators an easy way to create a collection of related AWS resources and provision them in an orderly and predictable fashion. The following articles and documents provide guidance on building templates and using the various AWS CloudFormation features to provision your AWS resources.
The AWS CloudFormation Designer is a visual tool that allows you to create and modify CloudFormation templates using a drag-and-drop interface. You can easily add, modify, or remove resources and the underlying JSON will be altered accordingly. If you modify a template that is associated with a running stack, you can update the stack so that it conforms to the template.
AWS CloudFormation gives you an easy way to create the set of resources such as Amazon EC2 instance, Amazon RDS database instances and Elastic Load Balancers needed to run your application. The template describes what resources you need and AWS CloudFormation takes care of how: provisioning the resources in an orderly and predictable fashion, handling and recovering from any failures or issues. While AWS CloudFormation takes care of provisioning all the resources, it raises the obvious question of how your application software is deployed, configured and executed on the Amazon EC2 instances. There are many options, each of which has implications on how quickly your application is ready and how flexible you need to be in terms of deploying new versions of the software.
AWS CloudFormation can help you to configure and/or install your application as well as how to bootstrap deployment and management tools that you may already use in your environment. Chef is an open source infrastructure automation solution from Opscode, written in Ruby, that allows you to automate the configuration of your systems and the applications that sit on top of it. AWS CloudFormation and Chef can be used together to automate your entire deployment and management processes, from your AWS resources through to your application artifacts.
AWS CloudFormation can help you to configure and/or install your application as well as how to bootstrap deployment and management tools that you may already use in your environment. Puppet is an open source platform for provisioning, configuring and patching applications and operating system components. AWS CloudFormation and Puppet can be used together to automate your entire deployment and management processes, from your AWS resources through to your application artifacts.
With the launch of AWS CloudFormation another important step has been taken in making it easier for customers to deploy applications to the cloud. Often an application requires several infrastructure resources to be created and AWS CloudFormation helps customers create and manage these collections of AWS resources in a simple and predictable way. Using declarative Templates customers can create Stacks of resources ensuring that all resources have been created, in the right sequence and with the correct confirmation.
To date, many people have used AWS in what we'll have to think of as cooking mode. They launch some instances, assign some Elastic IP addresses, create some message queues, and so forth. Sometimes this is semi-automated with scripts or templates, and sometimes it is a manual process. As overall system complexity grows, launching the right combination of AMIs, assigning them to roles, dealing with error conditions, and getting all the moving parts into the proper positions becomes more and more challenging.Today, all of you cooks get to become bakers!
This article shows how the Amazon Linux AMI can be used along with AWS CloudFormation to start up and configure an application dynamically at boot time. The example uses the new WaitCondition resource supported by AWS CloudFormation to wait for a Ruby on Rails application to be configured and launched before the stack is considered to be successfully created. The example also takes advantage of the Amazon Linux AMI support for Cloud-init, an open source application built by Canonical. Cloud-init enables you to use the Amazon Elastic Compute Cloud (Amazon EC2) UserData parameter to specify actions to run on your instance at boot time.
This short slide presentation walks through the need to orchestrate and automate provisioning in the cloud.