We shared eb_deployer with the world last year to help automate blue/green deployments using AWS Elastic Beanstalk. Manheim USA recently used eb_deployer to build and open source cf_deployer, a tool that helps deploy to AWS using CloudFormation templates.
cf_deployer is a Ruby gem based on eb_deployer that helps deploy to AWS using CloudFormation templates. It was created and open sourced by Manheim USA and represents the organization’s first open source project. Manheim has used cf_deployer to successfully deploy applications to production.
When deploying applications with multiple components using CloudFormation, it’s very painful to manage the input and output between each component’s CloudFormation stacks. cf_deployer allows you to define dependencies between your components, easing hooking up input and output between them.
cf_deployer provides multiple deployment strategies: CName swap, autoscaling group swap, and create-update. ASG Swap and CNAME Swap allow you to approach zero downtime with blue/green deploys, while create-update offers the traditional method to bring down, update, and deploy the application.
It also supports hooks to run custom ruby code at different deployment phases.
The cf_deployer config file and CloudFormation templates are ERB templates. Config options can be set at global, component, and environment levels and can be overwritten via environment variables and command line options.
cf_deployer is based on AWS CloudFormation. eb_deployer is based on AWS Elastic Beanstalk. For complex deployment requirements, CloudFormation gives more control and options.
eb_deployer requires an application package (war, jar) to install the application at instance launch time. It has a relatively low learning curve compared to cf-deployer, which doesn’t automatically install the application at instance launch time. cf_deployer, on the other hand, needs the application baked into the base AMI images before launch time. Read more about eb_deployer here.