Monday, May 25, 2015

Comparison chart for different continuous deployment tools for AWS


I recently needed to conduct a research on the various continuous deployment tools available.
My results are summed up in this table:


Chef
Puppet
Ansible
CodeDeploy
Docker
What is it
A master-worksation service with OO DSL for deployment, uses git (ruby based) web UI on enterprise edition
A master-worksation service with OO DSL for deployment (ruby based) web UI on enterprise edition
 Yaml based script,
Push architecture, no clients (python based)
AWS deployment tool UI from AWS console
A container for a software environment so that the deployment env matches the dev env similar to AMIs
How to use
Install both client and server. Build the script trigger the workstations
Install both client and server .Build a manifest in the puappetmaster and then run the puppet script on every station
Install server. Create a playbook in yaml
Install on the servers and then use web UI to configure
Create a new (or use a perdefined one as basis) container.
Install what you need.
Commit it as a container. Upload to hub.
Install it wherever you want
Learning curve
Need to learn the scripting language
Need to learn the scripting language
Need to learn the scripting language (but a simple one)
Very simple streightforward
Fast. Just a few docker commands
Price
Free with enterprise edition (6$ per node)
Free with enterprise edition (112$ per node)
Free
Free for now
Free open source
Scaling
Checf server deploys to multiple stations easily but no push
puppetmaster deploys to multiple stations easily using push
Ansible quick deployment to multiple severs
No prob
infinite
Environment support
All
All
All
All
Linux (based on linux containers)
On-premise
Can be deployed on on-premise servers
Can be deployed on on-premise servers
Can be deployed on on-premise servers
EC2 only
No prob
Supported langs
All
All
All
All
All
Cons
Takes some disk space (especcialy server). No push feature
Complexity of scripts. Steep learning curve. Expensive enterprise edition
Very simple - less control. No code reuse
Must use github (for now)
Less environment configuration options
Need to build entire image. Slow deployment.
pros
downloadable playbooks, strong community, cheap (not really necessary) paid edition
Fast, reusable, widely used, big community with downloadable modules

Fast, simple, no clients, downloadable playbooks
Great EC2 integration.
Automatic built in CD support. Very simple.
Community containers, full environment (very safe), simple (no need to learn a new language)