I’ve been teaching myself Puppet. I determined early on that I preferred the standalone approach, where the whole configuration is stored in a centralized repository with the clients periodically checking out the configuration and applying the changes. Since there are some gaps in the information I found on the subject, I put the most basic structure together and made it available in github. Take this as a starting point. It will need modification to suit your needs.
The assumptions for this project are related to the kickstart project that can also be found in github. If you kickstart a new host/vm, you will want to place it under configuration management as quickly as possible, usually a requirement these days. I have included the bootstrap.sh script to act as the first step towards that goal. Once the initial checkout and application of the configuration occur, reboot and you can start using the new host/vm in it’s role.
Edit: Kick or don’t kick. Puppet does not care.