This document discusses infrastructure as code (IAC), which is the process of managing and provisioning computer infrastructure and servers through machine-readable definition files rather than physical hardware configuration or interactive configuration tools. It addresses what IAC is, when it is used, the types of IAC including declarative and imperative, methods like push and pull, challenges around testing and updates, and popular IAC tools like Vagrant, Docker, Packer, Terraform, Ansible, Chef and Jenkins that can be used to implement infrastructure as code.