- Puppet is a tool that allows you to define infrastructure as code and manage your infrastructure in a consistent, versioned way like software. It uses resources and relationships between them to define what state should exist. - Modules contain Puppet code, files, and templates to manage specific components like Apache or MySQL. They can be found on the Puppet Forge or GitHub. - Puppet uses a dependency graph of resources to determine the order of operations needed to ensure resources are in the desired state. It is highly customizable through Ruby plugins. - The autoami module contains tools to automatically generate new AMIs when Puppet runs detect configuration changes, ensuring infrastructure is always up to date. It uses custom Puppet faces