I work with puppet several weeks back, helping a client using puppet enterprise to manage Windows servers. Puppet is solid, the enterprise version have installer wizard that will also install all puppet requirements like MySQL. Puppet could be used in the simplest way. Only one file manifest, or you could split a file per host or you can follow the best practice where you create classes and import that class on a manifest. You can even extend your manifest with ruby. Puppet support Linux, Windows and UNIX. Puppet documentation is also good.
Room for Improvement:
Puppet has steep learning curve so you need to spend some time before you can use puppet on your daily. If you only manage a small number of servers the time to create manifest might be longer than you create, edit and copy configuration manually to each server, but if you’re looking for long-term solution of course this is worth doing. Even that the documentation is good, I can’t find enough manifest sample for some basic usage, have to Google a lot, bumping from one blog to another blog. Puppet Enterprise give you limit to manage only 10 machine, but if you need to manage more machine but don’t want to spend money you can use puppet open source.
Good tools to automate your servers, the time and effort to learn writing manifest is quiet high but it's worth on the long run