Some key learnings from a past project utilizing puppet to do infrastructure management in case you're interested :)
- puppet's DSL is imperative and not procedural. This can be somewhat frustrating to folks who are used to procedural languages.
- It can be quite "interesting" to do loops though a later version of puppet does have the ability to write manifests in ruby.
- watch out for some puppet gotchas.
- use hiera for configuration management.
- buy a good book.