This document outlines how to use Puppet to configure an EC2 instance launched from a user-data script in AWS, storing modules and data in Git and S3 while keeping secrets in S3, allowing any version of code to be deployed to a scalable infrastructure without manual server approval where Puppet only runs once at instance launch.