This document discusses automating cloud infrastructure using Puppet. It begins by describing issues with traditional single server infrastructure like limited scalability and redundancy. It then introduces using tools like AWS, Puppet, and Terraform to provision infrastructure in the cloud with improved scalability, isolation, and zero-downtime deployments. It discusses using Puppet and Terraform to define and provision AWS resources declaratively. It also covers bootstrapping Puppet onto new instances using techniques like autosigning, ENCs, Hiera lookups, AWS user data, and Cloud-init to automate configuration. The document concludes with a demonstration of provisioning a stack of web servers on AWS using Terraform and Puppet.