Application deployment with Puppet

I'd look into either Capistrano or Fabric for deployments..

You'll have better control over how the deployment happens with these two tools.


Puppet is used for deployments in many large organizations, but it's not always perfect. Much of it depends on your deployment methodology. Are you deploying to lots of machines at once? Do you do rolling deployments?

Some organizations use Puppet by building packages of their deployments and then having puppet enforce policy to be at the right version of that package. Because puppet has the concept of environments included, you can use environments to do deployments in stages (dev, test, prod for example).

Other organizations use puppet to orchestrate deployment by either firing off an rsync, git checkout or some recursively file copies using puppet (though that is rather slow).

There are other pretty good tools available for deployment too. I have used Whiskey Disk in the past (a simple ruby tool) and liked it a lot.

(Disclaimer, I work at Puppet Labs)


If you want to build a package out of your application, you could look into FPM. Code is on GitHub.