puppet mastering

At my work, we're now really digging into using Puppet - no longer just as a TechOps tools, but for our whole development cycle.

The hardest thing I've come across so far is in deploying Perl CPAN packages, although i have been using manifest/recipe i found here -
http://www.windley.com/archives/2008/10/using_puppet_and_cpan.shtml

It had been working quite well, but now as we've been adding more and more to Puppet, I started seeing an error message:

root@machine:~ $ puppet agent -test
err: Could not retrieve catalog from remote server: Could not intern from pson: expected value in object at ‘”i'!
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run

- the error was intermittent and always slightly differently, making it quite hard to track down. I found a number of people running into similar problems on forums and mailing lists, but no satisfactory answers.

Aiiight, so the problem is due to the default HTTP server within Puppet, which is called WEBrick - I didn't dig into why, but after having re-double-triple-checked my manifest syntax and having tried a million other solutions, i thought to switch out the webserver component to see what would happen (I wasn't being completely original here - any article which talks about scaling Puppet says that you have to move to using a different server).

Instructions for switching to Apache2/Passenger (mod_rails) are here - they're quite simple and it's easy to setup.