[Camps-users] Integration with related projects

Jon Jensen jon at endpoint.com
Tue Dec 9 19:26:22 UTC 2008


Lately I've been doing work for a client with Puppet and ControlTier, and 
have found them to be a good complement to their Camps system. Each of the 
pieces fills a different need, roughly:

Kickstart: Initially provisioning Red Hat Enterprise Linux servers the 
same way each time. Basic stuff.

Puppet: System configuration management across the various tiers of the 
application, and enforcing uniform access, configuration, and package sets 
and updates.

ControlTier: Application packaging, deployment, rollback, etc. It has the 
nicest management interface of the bunch, with a pretty GUI that helps 
non-technical people see what's going on. It can also do job scheduling. 
It's fairly Java focused and is the least natural fit among the tools, and 
perhaps for the typical Camps user, Capistrano would be a better choice 

Camps: Development environment management including handling the split 
between version-controlled code and databases, a multi-developer and 
multi-project scenario, and making development work accessible to business 
people at all stages.

The results of integrating Camps, ControlTier, and Puppet are so far 
encouraging, and it's led me to consider whether this is a natural fit we 
should document and have a recommended integration recipe for.

I'm interested in any comments you all have on that.

For small sites running on a single server, Capistrano or ControlTier feel 
like overkill when I'm already deploying code directly from Git. But they 
do help plan for a more complex future with a large non-versioned HTML 
docroot, or multiple app servers, or automatically applying DDL changes to 
the database, etc.

On another note, since Puppet and Capistrano are both written in Ruby, and 
we've been contemplating rewriting Camps for version 4 anyway, I've been 
thinking about whether it might make sense to write it in Ruby instead of 
Perl. That would let us leverage any Puppet or Capistrano libraries that 
would be useful, but it would also settle the question of which add-on 
object system to use in Perl (standard blessed hashes? Moose? Coat?) since 
Ruby's built-in object system would suffice and thus greatly reduce 
external dependencies. (We'd see the same advantage with Python.)


Jon Jensen
End Point Corporation

More information about the Camps-users mailing list