Manheim's cf_deployer

news scaling
Posted by Melissa

22 August 2014

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.

What is cf_deployer?

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.

Why cf_deployer?

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.

Additional information

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 vs. eb_deployer

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.

Upcoming work

Multi-regions routing policy
Parallel deployment
Support OpenStack


James Brechtel
Peter Zhao
Patrick McFadden
Rob Sweet

comments powered by Disqus