I've been researching puppet lately, and I think it could be useful to integrate into my deployment pipeline.

Currently, I deploy my apps by manually adding users, creating vhosts, setting directories, and then git cloning my repo from GitHub. I deploy changes with a simple Git pull (Git hooks take care of database migrations, clearing the cache, etc).

With puppet, I could setup a manifest to do the directory creation, permissions and virtual host management for me. To deploy an app to a dev/prod environment, I'd pull the manifest from GitHub and run it locally. I was also thinking about adding the puppet manifest process to the Git hook so every pull, Puppet could ensure directory permissions are OK.

Are there issues with this approach? Things I could do better?

1 Answer 1


This sounds like an effective approach; I like the creativity. Since you asked for comments, I will offer a few:

1) While puppet is a very powerful tool, it seems like a bit of overkill for just directory creation and permissions. A simple bash script might do the trick in as many lines as Puppet, with no Puppet executable dependency.

2) Consider using Puppet to do your deployment too: PuppetLabs provides a manifest to check out of a git repository. Then you can run it periodically, or on some other form of trigger. This obviously would invert the directionality of your deployment, turning it from a "push" model to a "pull" model. It can have advantages, including simplicity.

3) A more advanced usage of Puppet would have you set up your entire production environment from scratch, including installing your app. This would create a fully automated instance of your app, making virtualized instances easy and portable, and causing horizontal scaling to be simple.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.