Autoplay
Autocomplete
Previous Lesson
Complete and Continue
More than Certified in Terraform 2024
Introduction and Prerequisites (REFRESH)
About the Refresh - READ ME FIRST!!!
GitHub and Codespaces Setup (3:48)
GitHub CLI Permissions (4:18)
Install Terraform! (2:22)
Automate GitHub Login
Terraform Basics (REFRESH)
Providers (5:41)
Terraform Init (4:23)
Provider Versioning and Dependency Locks (6:02)
Backends (3:49)
Quiz #1
Our First Resource (5:37)
Terraform Plan, Apply, and Destroy (7:55)
Resource Addresses (7:49)
The State File (5:53)
Terraform State Commands (4:45)
Resources: Terraform Apply Yourself! (2:24)
Quiz #2
The Random Provider (5:15)
Terraform Console and Interpolation (7:12)
Count (6:37)
Count: Terraform Apply Yourself! (2:01)
Splat and Outputs (8:19)
Terraform Types (7:33)
For Expressions (7:16)
Variables (6:57)
Variable Precedence (9:35)
Variable Validation (7:29)
The Contains Function (3:57)
Conditionals (6:02)
Quiz #3
Terraform rm and refresh-only (9:59)
for_each (8:55)
for_each Terraform Apply Yourself! (2:37)
The Length Function (4:58)
The local-exec Provisioner (8:42)
local-exec Terraform Apply Yourself! (5:03)
The depends_on Meta-Argument (7:13)
for_each with Maps (8:34)
Quiz #4
Our Deployment in Action! (9:29)
ignore_changes LIfecycle Meta-Argument (3:49)
Data Sources (5:02)
Heredocs and Escape Sequences (5:19)
The Templatefile Function (5:50)
Refactoring our Code and Moved Blocks (5:14)
About GitHub Pages and Accounts
Nested Blocks (8:46)
dynamic_blocks (6:04)
The try() Function (3:10)
Quiz #5
Modular Terraform (REFRESH)
First Module (5:06)
Path References (4:33)
Locals (7:15)
Module Outputs (3:23)
New Module - Terraform Apply Yourself! (8:09)
The Flatten Function and If Statements (7:42)
Using our Deploy Keys (Optional) (4:32)
Quiz 1
The Info Page Module Project (REFRESH)
Info Page Intro (2:26)
Info Page Module - Terraform Apply Yourself (7:03)
Terraform Providers Schema (6:17)
Terraform Time (2:24)
Passing Info from One Module to Another (6:44)
Loops in Templatefiles (7:50)
Quiz 1
Introduction and Prerequisites
Welcome! Course Introduction (2:29)
Terraform Version Notes
Downloading the Code
AWS Setup and Cloud9 Info
New AWS Account Setup (5:24)
Configure Billing Alarms (3:12)
Securing Your AWS Account (5:32)
AWS Cloud9 Configuration (4:05)
AWS Cloud9 Disk Expanding (3:44)
Security Groups and IP Access (2:22)
Terraform Installation (3:05)
Terraform Terminology (8:06)
Terraform Basics and Docker
The Docker Provider (4:45)
Terraform Init Deeper Dive (3:25)
Terraform Dependency Lock (6:40)
Terraform Apply! (6:19)
Terraform Plan and Apply Deeper Dive (5:33)
Referencing other Resources (6:30)
Viewing Your Deployment in the Browser (3:13)
Terraform State Deeper Dive (7:24)
Terraform Console and Outputs (7:49)
The Join Function (6:37)
The Random Resource (9:16)
Multiple Resources and Count (7:28)
The Splat Expression (5:04)
"For" Loops (10:20)
Tainting and Updating Resources (5:32)
State Locking and Breaking State (5:39)
Terraform Import (9:59)
Terraform Refresh and State rm (8:15)
Adding Variables (7:29)
Variable Validation (v0.13+) (4:48)
Variables and Outputs (2:48)
Sensitive Variables and .tfvars Files (3:09)
Variable Definition Precedence (5:09)
Hiding Sensitive Values from the CLI (v0.14+) (4:53)
The Bind Mount and Local Exec (11:04)
Utilizing Local Values (7:46)
Min and Max Functions and the Expand Expression (5:23)
Path References and Interpolation (3:58)
Maps and Lookups: the Image Variable (7:24)
Maps and Lookups: External Ports (7:10)
Terraform Workspaces (5:49)
Referencing your Workspaces (4:59)
Utilizing Map Keys Instead of Lookups (3:40)
Modular Deployments
Introduction to Modules (2:28)
First Module! (8:54)
Module Variables (4:45)
Terraform Graph (7:57)
Troubleshooting Dependencies (9:14)
The Container Module (11:16)
Module Outputs (6:17)
Module Information Flow (6:00)
The Docker Volume (9:16)
Lifecycle Customization and Targeting (5:05)
One Module for Multiple Resources (7:02)
Using for_each (7:39)
Deploying Containers with for_each (9:44)
Using for_each and Count Together (9:15)
New Outputs and Map Transformations (5:08)
Grafana Apply Yourself! (1:19)
Grafana Solution (2:44)
Self Referencing and Provisioner Failure Modes (7:17)
Terraform Apply Yourself! Self Referencing (4:20)
Dynamic Blocks (11:05)
Nesting the Volume Module (12:16)
Weather Dashboard Project! (12:35)
Deploy AWS Resources with Terraform
What We're Going to Build (3:19)
Configuring Terraform Cloud (5:56)
The AWS Provider (3:56)
Deploy a VPC (10:29)
Remote State in Terraform Cloud (3:17)
VPC Subnets "Hardcoded" (8:55)
VPC Subnets - Terraform Apply Yourself! (4:01)
The cidrsubnet() Function (8:54)
The aws_availability_zones Data Source (3:56)
The random_shuffle Resource (4:54)
Why Didn't We Use for_each?
Route Tables and the Internet Gateway (10:11)
The create_before_destroy Lifcycle Meta Argument (4:51)
VPC Security Groups "Hardcoded" (8:50)
VPC Security Groups Dynamic (7:04)
VPC Security Groups - Terraform Apply Yourself! (4:18)
VPC RDS Subnet Group and Conditional (6:56)
Basic RDS Setup (7:11)
VPC Outputs for RDS - Terraform Apply Yourself! (5:38)
Managing Sensitive RDS Values (5:37)
The Terraform Providers Schema Command (3:53)
ALB Initial Setup (5:41)
ALB Security Group and Subnets - Terraform Apply Yourself! (3:42)
ALB Target Group and the uuid() and substr() Functions (8:25)
ALB Listeners (5:58)
Upgrading Terraform
ALB Lifecycle Policies: ignore_changes and create_before_destroy (8:43)
The aws_ami Data Source (5:49)
Scaffolding our EC2 Instance and random_id (7:04)
EC2 - Terraform Apply Yourself! (3:30)
SSH Key for Our Instance and the file() Function (6:27)
Controlling random_id Changes with Keepers (4:09)
Userdata UPDATE!
EC2 User Data and Template Files (6:49)
EC2 User Data Template Variables - Terraform Apply Yourself! (7:25)
Deploying NGINX to Our Kubernetes Cluster (6:53)
Adding our Ec2 Instances to the Target Group (7:45)
Adding some Outputs for Our Resources (3:32)
Sensitive Outputs and How to Access Them (5:50)
Outputs - Terraform Apply Yourself! (4:23)
Utilizing the local-exec Provisioner to SCP our Config File (11:50)
Utilizing the remote-exec Provisioner to Run Commands on EC2 Instances (5:35)
Cleanup and Create a Destroy Provisioner - Terraform Apply Yourself! (6:40)
Deploying K8s Resources from Our Cloud9 Instance (3:12)
Deploying Kubernetes Resources with Terraform
Configuring the Kubernetes Provider (4:21)
Our First Kubernetes Deployment (4:08)
Terraform Apply Yourself - Utilizing for_each in Our Deployment (6:22)
The terraform_remote_state datasource and the split() Function (8:01)
Continuous Deployment using Terraform Cloud
What We're Going to Build (3:49)
Update! New Terraform Cloud UI (1:02)
Setting up Our Github (5:15)
Configure Terraform cloud (4:54)
Our First Cloud Deployment! (9:22)
Configuring Repository-Based Modules (6:36)
Utilizing the Configuration Designer to Create a Deployment (4:46)
Setting up Providers for Our New Deployment (5:41)
Configuring Our Github Resources in Terraform (5:58)
Configuring Our Terraform Cloud Resources in Terraform (8:06)
Deploying Our Module-Based Infrastructure! (5:47)
Pushing and Pulling Remote State (5:44)
Updating Our Deployment and Destroying it! (6:21)
Terraform Graph
Complete and Continue