Puppet is a great way to manage server configuration, but the client/server model can be too complex. The standalone Puppet agent can be run with Capistrano.
We can make embedded software better if we take testing more seriously, avoid optimization until it's necessary, write more abstract code, and stop believing we're special.