I would say the biggest difference between Puppet and Chef comes down to Chef is basically 'pure' Ruby while Puppet has a DSL derived from Ruby, which is meant to be easy to work with.
I personally prefer Puppet because there's generally one way to do things, while it also allows you to extend the resources and functions available by falling back to custom written Ruby libraries.
Comments
I would say the biggest difference between Puppet and Chef comes down to Chef is basically 'pure' Ruby while Puppet has a DSL derived from Ruby, which is meant to be easy to work with.
I personally prefer Puppet because there's generally one way to do things, while it also allows you to extend the resources and functions available by falling back to custom written Ruby libraries.
The Puppet 'code' looks pretty basic and is all generally derived from the core resource types defined here: http://docs.puppetlabs.com/references/latest/type.html
You will also see some examples of what defined resources might look like there.