Does either Puppet or Chef support replicated puppetmasterd/Chef servers? It seems very surprising to me that these tools would force a single point of failure, but I haven't been able to find any mention of this in their docs or Google.
I know Puppet and Chef can be run without a server (possibly updated with, e.g., git as described in http://bitfieldconsulting.com/scaling-puppet-with-distributed-version-control), but this seems like a second-class citizen, and presumably loses some monitoring ability.