Hands-On Terraform
Duration: 3 Days
Module 1: Getting Started with Terraform
• Terraform Overview
o Infrastructure as Code
o IaC Tools
o Why Terraform?
• Installation
o Terraform Binary
o System Prerequisites
o Google Cloud CLI
• Terraform Cloud
• Exercise: Installing Terraform
Module 2: Terraform Essentials
• Providers
o Overview of Providers
o Authentication
o Google Provider
• Folder Structure
o .tf Files
o Resources
o Variables
o .tfvars Files
o Output
• Workflow
o Init
o Plan
o Apply
o Show
o Change
o Destroy
o Running External Scripts
• Managing State
o .tfstate Files
o Managing Drift
• Exercise: Getting Started with Terraform
Module 3: HashiCorp Configuration Language (HCL)
• Basic Syntax
o Modules
o Blocks
o Declaring Variables
o Primitive Data Types
o Collection Types
o Complex Types
o Setting Variable Values
o Data Blocks
o Interpolation Expressions
o Resource Dependencies
o Output Variables
• Creating Multiple Resources
o Count
o Sets
o For-Each
o For
o Dynamic Blocks
o Generating Random Values
• Built-in Functions
o String
o Numeric
o Date and Time
o Collection
• Reverse Engineering Templates
o Importing Existing Resources
o Terraformer
• Exercise: Understanding HCL
Module 4: Building Cloud Infrastructure
• Networks
o Google Cloud VPCs
• Virtual Machines
o Compute Engine
• Storage
o Google Cloud Storage
• Databases
o RDS
o Cloud SQL
• Exercise: Building Cloud Infrastructure
Module 5: Deploying Scalable, Fault-Tolerant Solutions
• Architecting Cloud Applications
o Regions and Zones
o Managing Multiple Instances
o Firewalls
o Load Balancers
• Deploying Applications to GCP
o VPC with Multiple Availability Zones
o Security Groups
o Load Balancers
• Deploying Applications to GCP
o Virtual Networks
o Security Groups
o Load Balancers
• Deploying Applications to Google Cloud
o VPC with Multiple Regions
o Firewall Rules
o Load Balancers
• Exercise: Deploying a Scalable, Fault-Tolerant Application with Terraform
Module 6: Modularizing Terraform Deployments
• Modules Revisited
o Terraform Modules
o Input
o Resources
o Output
• Building Modular Deployments
o Folder Hierarchy
o Using Modules
o Passing Parameters to Modules
o Handling Dependencies between Modules
• Exercise: Modularizing a Complex Deployment
Module 7: Terraform Cloud
• Using Terraform Cloud
o Features
o Creating an Account
o Organizations
o Workspaces
• Exercise: Using Terraform Cloud
Module 8: Deploying to Kubernetes with Terraform
• Kubernetes Basics
o Clusters
o Deployments
o Kubernetes Configuration
o Deploying Kubernetes Applications with kubectl
• Creating Kubernetes Clusters with Terraform
o GKE Clusters
• Gitlab CI/CD: GitLab CI/CD Pipeline Job
Integration of Terraform and Ansible