Use a proper provisioner (like Puppet)

Using a shell script for provisioning is not the most efficient or maintainable approach. What about getting it handled via Puppet?