Hands-On Terraform for AWS
Contact us to book this courseCloud Computing
On-Site, Virtual
2 days
Infrastructure as Code (IaC) is the process of creating and deploying computing infrastructure, including applications and databases, using scripts and configuration files. Terraform is a powerful IaC tool that enables automated provisioning of AWS services.
This course teaches everything you need to get started with Terraform on AWS—from understanding HashiCorp Configuration Language (HCL) to advanced deployment techniques. The course includes examples, demos, and hands-on labs using AWS services such as VPC, EC2, S3, and RDS.
Learning Objectives
- Automate the creation, management, and destruction of AWS infrastructure using Terraform
- Create Infrastructure as Code with HashiCorp Configuration Language (HCL)
- Provision AWS resources such as EC2, S3, RDS, and networking components
- Build complex, reusable deployments using Terraform modules
- Simplify team collaboration using Terraform Cloud
Who Should Attend
Engineers, developers, architects, and anyone else who would like to use Terraform to automate AWS infrastructure provisioning and application deployment.
Prerequisites
An understanding of cloud computing and prior experience creating AWS resources is recommended.
Hands-On Labs
This class includes hands-on labs focused entirely on AWS. The course includes labs that build from a simple foundation to a full, highly available application across multiple Availability Zones in a single region using several modules.
Course outline
- Terraform Overview
- Infrastructure as Code on AWS
- IaC Tools Overview
- Why Terraform for AWS
- Installation
- Terraform Binary
- System Prerequisites
- AWS CLI Setup and Configuration
- Terraform Cloud
- Lab: Terraform Installation
- Providers
- Overview of Providers
- Authentication with AWS
- AWS Provider Deep Dive
- Folder Structure
- .tf Files
- Resources
- Variables
- .tfvars Files
- Outputs
- Workflow
- Init
- Plan
- Apply
- Show
- Change
- Destroy
- Running External Scripts
- Managing State
- .tfstate Files
- Managing Drift
- Local vs. Remote State
- Lab: Terraform Essentials
- Networking
- AWS VPCs, Subnets, Route Tables, Route Table Associations, and Gateways
- Using Data Blocks for Dynamic Data
- Security Groups
- Security Groups and Security Group Rules
- Storage
- Amazon S3 Buckets and Bucket Properties, such as Versioning and Block Public Access
- Databases
- Amazon RDS (PostgreSQL Engine), RDS password management
- Lab: Building Cloud Infrastructure
- Basic Syntax
- Modules and Blocks
- Declaring Variables
- Data Types (Primitive, Collection, Structural)
- Setting Variable Values
- Conditional Expressions
- Locals
- Resource Dependencies
- Output Variables
- Creating Multiple Resources
- Count, For-Each, Dynamic Blocks
- Generating Random Values
- Built-in Functions
- String, Numeric, Date and Time, Collection, IP Network
- Using the Terraform Console to Validate Functions in Real Time Before Implementing in Code
- Reverse Engineering Templates
- Importing Existing AWS Resources
- Viewing and Managing State
- Bulk Importing an Existing Environment Into Terraform
- Lab: HashiCorp Configuration Language
- AWS Architecture Best Practices
- Regions and Availability Zones
- High Availability and Resilience Patterns
- Networking and Security
- Load Balancing and Scaling
- Elastic Load Balancer (ALB/NLB)
- Target Groups
- Listeners
- Auto Scaling Groups
- Launch Templates
- Lab: Deploying Applications to AWS
- Terraform Modules in AWS
- Input, Resources, and Output
- Calling Other Modules from Within a Module
- Building Modular Deployments
- Folder Hierarchy
- Passing Parameters and Managing Dependencies
- Using AWS Modules from Terraform Registry
- Lab: Modularizing a Complex AWS Deployment
- Hashicord Cloud Platform (HPC) with AWS
- Features and Benefits
- Creating an Account and Organization
- Managing Workspaces for AWS Projects
- Terraform Workspaces
- Version Control