Autoplay
Autocomplete
Previous Lesson
Complete and Continue
More than Certified in Terraform
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)
State Locking and Breaking State
Complete and Continue