Puppet is a configuration management tool that uses a client-server model. The puppet master stores node configurations in a declarative domain-specific language (DSL). Puppet agents on nodes retrieve their configuration from the master and enforce it locally. Modules define reusable components for configuring packages, files, services, and other resources. Puppet supports environments for separate dev/qa workflows and uses external node classifiers and databases for scaling to large infrastructures.