Puppet is an IT automation tool that helps system administrators manage infrastructure through its lifecycle. It defines the desired state of systems in a declarative language and enforces that configuration by syncing resources. Resources are modeled as types with attributes and Puppet ensures resources match their defined state. Manifests declare resources and dependencies. Classes bundle resources and modules make reusable code and data available to any manifest. The master-agent architecture separates code from configuration enforcement.