Puppet is an open source tool for server configuration management. It allows systems to be configured and maintained in a consistent, automated way. Puppet uses a declarative language to describe system configuration and can manage a variety of operating systems. It provides benefits like reduced entropy, ability to quickly scale machines, change management tracking and repeatable states. Puppet uses a client-server architecture with SSL encryption and supports concepts like templates, defined types and ordering of resources.