May 26, 2012
tom

deploying Python code with Puppet

Question

I’m trying to implement a deployment system for my web application, based on Puppet.

The application consists of several services (a couple of web servers: Django- and Tornado-based and a worker based on Celery). They live in different git repositories, hosted on github.

I’ve used Chef for my previous projects. In case of Chef, deploying such thing would be easy: I’d just use git resource to checkout necessary code for this particular node, and set everything else up.

However, I don’t understand how it’s done in Puppet. I haven’t found a git type in documentation. I’ve tried Googling it, but from what I found it seems that checking out and updating git code from Puppet is not a usual task.

Clearly, my assumed workflow is somewhat unusual for Puppet. I could try something else. What’s the natural way to deploy such apps with Puppet?

Asked by valya

Answer

I’d use fabric to deploy Python code — in fact, I do. But if all you want is the git stuff, here’s an example from my puppet configurations using the vcsrepo module:

vcsrepo { '/var/www/gitorious':
    ensure   => present,
    owner    => 'git',
    source   => 'git://gitorious.org/gitorious/mainline.git',
    revision => 'v2.2.1',
    provider => git,
}   

Generally speaking, Puppet is not a good tool when you want things done in a tight time frame. Puppetlabs solution to these tasks is MCollective, which I have used and disliked.

Answered by Daniel C. Sobral

Related posts:

  1. Puppet agent to puppet master (running on nginx/ruby1.9) SSL certificate issues
  2. Is it possible to use the Puppet inventory for puppet modules and other systems?
  3. I’ve broken my puppet, clients are failing reporting “ Could not run Puppet configuration client: Invalid parameter stage”
  4. Puppet – Any way to copy predefined custom configuration files for software on clients from the puppet master (host)?
  5. Call Puppet function from Puppet template?

Leave a comment