Manheim's cf_deployer

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.

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.