The Infrastructure Developer's Guide to Terraform: AWS Edition

AVG Duration7h


With the increasing complexity of the public cloud, infrastructure as code with software development practices has become the recommended way to manage the cloud. Terraform is an open-source, cloud-agnostic tool that enables Cloud and DevOps Engineers to automate and maintain infrastructure with a powerful machine-friendly but human-readable syntax. This learning path contains a series of hands-on labs that will teach you how to build infrastructure using Terraform. An IDE browser is provided in each lab to write and deploy the Terraform code. Complete the challenge at the end to validate your Terraform skills.

Learning Objectives

The learning path teaches you how to perform the following in Terraform:

  • Deploy and destroy AWS infrastructure using Terraform
  • Use variables to create dynamic Terraform code
  • Creating conditional logic
  • How to create loops to scale infrastructure
  • Securely store Terraform state data
  • Develop modules to create reusable infrastructure code
  • Use Terragrunt to scale and enhance Terraform code
  • Write tests to validate Terraform configurations

Intended Audience

This learning path is intended for Cloud and DevOps Engineers.


You must have some experience with AWS fundamentals. If you want to familiarize yourself with AWS fundamentals, the following content is recommended before attempting the learning path:

Fundamentals of AWS


If you have any feedback or suggestions relating to this learning path, feel free to contact us at  


Your certificate for this learning path

Training Content

Course - Intermediate - 1h 41m
Terraform 1.0 - Provisioning AWS Infrastructure
In this course you'll learn about Terraform from the ground up, and how it can be used to codify infrastructure.
Hands-on Lab - Beginner - 45m
Installing Terraform on Windows and Linux
In this hands-on infrastructure as code lab, you will learn how to download and install Terraform on Windows and Linux platforms.
Hands-on Lab - Beginner - 30m
Deploying Infrastructure with Terraform
Get started on your DevOps journey and learn how to build infrastructure on AWS using Terraform.
Hands-on Lab - Beginner - 40m
Creating Terraform Configurations with Implicit Dependencies
Following along in this hands on lab to discover the importance of resource dependencies in Terraform configurations.
Hands-on Lab - Beginner - 45m
Creating Variables in Terraform Configurations
Follow along in this hand on lab and create re-usable infrastructure code with Terraform variables.
Hands-on Lab - Beginner - 30m
Using Provisioners with Terraform
Discover the use case of Terraform provisioners and learn when to use them in Terraform configurations.
Hands-on Lab - Beginner - 40m
Exploring Terraform State
Follow along in this hands on lab and explore the concept of Terraform state when managing AWS infrastructure through code.
Hands-on Lab - Beginner - 45m
Using Terraform Remote State
Follow along with this hands on lab and configure remote state for Terraform configurations using AWS services like S3 and DynamoDB.
Hands-on Lab - Beginner - 40m
Creating Reusable Infrastructure with Terraform Modules
Follow along in this hands-on lab and create reusable infrastructure that can be versioned and tested with Terraform modules.
Hands-on Lab - Beginner - 40m
Importing Existing Infrastructure into Terraform
Follow along with this hands on lab and import existing AWS resources into a Terraform configuration to be managed by code.
Hands-on Lab - Intermediate - 30m
Integrating Conditional Logic into Terraform Configurations
Follow along with this hands-on lab and create a dynamic Terraform module by inserting conditional logic into the Terraform configuration.
Hands-on Lab - Intermediate - 40m
Creating Loops in Terraform and Scaling Resources
Follow along with this hands-on lab and create clean scalable Terraform code by using loops.
Hands-on Lab - Advanced - 30m
Keeping Terraform Remote State DRY with Terragrunt
Learn how to use Terragrunt to create separate Terraform environments with a remote state following DRY principles.
Hands-on Lab - Advanced - 30m
Passing Outputs Between Terraform Modules with Terragrunt
Learn advanced Terraform techniques by reducing the blast radius of critical infrastructure using Terragrunt to deploy an environment with separate Terraform states.
Hands-on Lab - Advanced - 40m
Creating DRY Terraform Environments with Terragrunt
Follow along in this hands-on lab and use Terragrunt to duplicate a Terraform environment and change the environment by modifying a single file.
Hands-on Lab - Advanced - 40m
Testing Terraform Code with Terratest
Develop a test to validate a Terraform module using Terratest, a popular Golang library for testing Terraform code.
Hands-on Lab Challenge - Advanced - 1h
Deploy EC2 with Terraform Challenge
In this lab challenge, you will test your Terraform knowledge. You will be tasked with developing an infrastructure as code solution using Terraform by creating a configuration to create a VPC, Subnet, and EC2 instance.
About the Author
Learning paths179

Jeremy is a Content Lead Architect and DevOps SME here at Cloud Academy where he specializes in developing DevOps technical training documentation.

He has a strong background in software engineering, and has been coding with various languages, frameworks, and systems for the past 25+ years. In recent times, Jeremy has been focused on DevOps, Cloud (AWS, GCP, Azure), Security, Kubernetes, and Machine Learning.

Jeremy holds professional certifications for AWS, GCP, Terraform, Kubernetes (CKA, CKAD, CKS).