After taking some time to study Puppet a while, I become to believe more and more that it is a great auto configuration tool. The following URLs are my studying track of Puppet.
For the beginner, it is recommended to walk through for learning the basic concept
Once you finish the above document, you probably want to do your own type and provider. Here you go:
Juniper provides its open source project for using Puppet to manage and configure the switches that support Puppet Agent. It is a very good example for you to understand how to define customer type and to implement provider.
To define customer type:
To implement provider: