Production deployment tools [closed]

Similar to building software, tools should be used to deploy production server updates (whether DB, website, router configurations, etc). The use of tools reduces certain types of human error (missed steps for example).

  • What tools are available for software/configuration/etc deployment (whether free or commercial)?

Please

  • List a single tool per post
  • What part of the deployment process it performs
  • Particular advantages or disadvantages to using this tool (ie, .NET only, supports all LAMP/WAMP platforms, etc)

Don't add a tool that already exists - add comments if you have something particular to say about a given answer.

-Adam


Puppet is a more recently-written tool, written in Ruby, that is gaining ground against cfengine.


cfengine is the canonical example in the unix world.


I really like cfengine 3

It can basically take care of every part of the deployment process, given the right configuration: copy files from a location, automatically use packaging system (like apt, yum) to install/update package, start/stop services, check for files/pages content.

I use it to install (or check existence of) packages, and since I'm more a Java guy, when In eed to deploy something, I download the archive from a central point, stop the Tomcat service, copy the archive in the Tomcat directory, start the service, and check that the right value can be found on a specific served page. Yes, cfengine does it all nearly by itself.

Advantages :

  • It works (that's an important feature).
  • Exists on both Linux/Unix and Windows (native)
  • Small resources usage

Disadvantages :

  • A bit difficult to use at first, the examples are a bit too complete, but tutorials are popping up all around

Even though it's a developer's tool mainly, Capistrano is a good choice too.

I'm not sure how well it's supported for Windows platforms other than it appears to work. Linux/OSX are fully supported.

You can use it to perform pretty much any operation on your deployment servers, from file updates to database backups, and user management.

Paired with a git repository, you get change management and quick and easy deployments.


Tool: Chef is a new-ish tool released in January by Opscode. It is written in Ruby and its configuration language is a pure Ruby DSL. It's a young tool under active development, but it's getting used in production by several companies.

Chef can manage your entire infrastructure, from setting up PXE boot and kickstart services, to deploying applications and managing users. It is very flexible, extensible and powerful.

Specific advantages are the pure Ruby DSL, a RESTful API, searchable node data, and a wealth of cookbooks ready to use. Because of the Ruby DSL, complex data structures and logic can be used within recipes, and along with the RESTful API, make Chef a powerful tool to program an infrastructure.