I view them as completely different tools for different tasks.
Puppet is a tool for configuring the server that my app runs on,
installing and configuring linux networking and user accounts, apache,
mysql and monitoring tools.
Capistrano is a tool for deploying my application to one or more
servers and scripting shell interactions with that application's
environment.
The only grey area is on direct project dependencies, my application
being a python app do I use setuptools (via capistrano) to install the
dependencies or do I use Puppet and debian's packaged version of those
same dependencies. But that's another holy war in itself :-)
To put it another way you could say that Puppet is for sysadmins,
Capistrano is for release managers.
For sure. Capistrano is definitely not intended to be used at that
scale. If someone were to find a (clean, maintainable) way to help cap
to scale that high, which didn't compromise the ease of use at smaller
scales, I'd be pleased to consider a patch, but I don't really intend to
do much work on my own to bring it to that level.
- Jamis