Danieldreier's script is great.
If you have control over the images that your nodes boot from, you can just install the puppet repo on the image.
If you are using Vagrant hosts, simply choose a box with puppet already installed.
On all other machines, I paste the following into the command line
# sudo rpm -Uvh http://rbel.frameos.org/rbel6 #Workaround for machines without ruby gems
sudo rpm -ivh http://yum.puppetlabs.com/el/6/products/i386/puppetlabs-release-6-7.noarch.rpm
sudo yum install -y puppet
sudo apt-get install -y python-software-properties
sudo dpkg -i puppetlabs-release-precise.deb
#apt-get install -y puppet-common #masterless puppet
apt-get install -y puppet #masterful puppet
(Adjust for sp1, sp2, ect..)
zypper addrepo -f http://download.opensuse.org/repositories/systemsmanagement:/puppet/SLE_11_SP2/ puppet
zypper install puppet
(You will get an error if it is already installed)
zypper install puppet-3.3.1-5.1.x86_64
There is a butt provisioning feature built into puppet that may do what you are looking for.
Naming your puppet master 'puppet' in dns and setting cert autosign to true will cause new nodes to provision automatically.
If a puppet server isn't specified the puppet agent will search dns for a server named 'puppet'.
Thanks to stefanlasiewski for pointing that out.