ad4469dc-7beb-4b7f-90b1-7de.../docs/00_overview.md

4.2 KiB
Raw Permalink Blame History

Terraform Instruction Lab From Zero to Team Collaboration (3 Hours)

This hands-on lab takes you from first contact with Terraform to a safe, team-ready workflow on AWS. You will provision real infrastructure, structure your code with variables and modules, and protect your state with an S3 backend and DynamoDB state locking. The material is paced for beginners and practical for engineers who want a concise, endtoend setup they can reuse at work.

Audience: Beginners using Ubuntu 24 for the first time
Goal: Deploy AWS resources using Terraform, adopt variables/outputs and modules, and enable remote state + locking for collaboration.

Outcomes

  • Understand what Terraform is and how it manages infrastructure as code (IaC)
  • Install and verify Terraform + AWS CLI on Ubuntu 24
  • Authenticate to AWS and validate IAM access
  • Write a minimal Terraform configuration and deploy an EC2 instance
  • Introduce variables, tfvars, and outputs for reuse and clarity
  • Configure remote state in S3 with DynamoDB locking to prevent race conditions
  • Compose and reuse modules (including a simple nested VPC + EC2 example)
  • Clean up all resources to avoid unnecessary AWS costs

What Well Build

  • A small, cost-conscious AWS stack:
    • Optional VPC with public subnet and Internet gateway
    • A single EC2 instance (Free Tier eligible type where possible)
    • Remote Terraform state stored in S3 with DynamoDB table for locking
  • A reusable module layout you can extend for real projects

Prerequisites

  • AWS account (Free Tier is fine) and basic familiarity with regions
  • IAM user or role with permissions for EC2, S3, and DynamoDB
  • Ubuntu 24.04 machine (VM, physical, or WSL) with Internet access
  • Willingness to use the terminal (copy/paste is fine!)

Tip: New to AWS CLI? No problem—setup is guided and verified in this lab.

Lab Roadmap

  • docs/01_install_setup.md: Install Terraform + AWS CLI and verify environment
  • docs/02_first_ec2.md: Author your first Terraform config and deploy EC2
  • docs/03_remote_state_s3_dynamodb.md: Configure S3 backend and DynamoDB locking
  • docs/04_variables_tfvars_outputs.md: Introduce variables, tfvars, and outputs
  • docs/05_modules_reuse.md: Create and consume modules; structure for reuse
  • docs/06_nested_modules_vpc_ec2.md: Model a simple VPC + EC2 with nested modules
  • docs/07_cleanup.md: Destroy resources and verify nothing is left behind
  • docs/08_test.md: Optional checks and validation ideas

Estimated Time (2 Hours)

  • Setup and verification: 1520 min
  • First EC2 with basics: 1520 min
  • Remote state + locking: 2025 min
  • Variables, tfvars, outputs: 1520 min
  • Modules + nested example: 2530 min
  • Cleanup and wrapup: 10 min

Key Concepts

  • Declarative IaC: Describe desired state; Terraform plans and applies changes
  • State: Terraform tracks real resources; protect it with remote storage + locks
  • Idempotence: Reruns converge to the same outcome when code is unchanged
  • Modules: Encapsulate patterns, promote reuse and reviewability
  • Collaboration: S3 state + DynamoDB locks prevent conflicting applies

Safety, Cost, and Region

  • Choose a region close to you and consistent across the lab (e.g., us-east-1)
  • Prefer Free Tier eligible instance types (e.g., t2.micro or t3.micro)
  • Always run the cleanup step in docs/07_cleanup.md after experimenting
  • Remote state resources (S3 bucket, DynamoDB table) have minimal ongoing cost

Tools Youll Use

  • Terraform CLI (1.6+ recommended)
  • AWS CLI v2
  • A text editor and terminal (bash/zsh)

Deliverables

  • A working Terraform project that can:
    • Deploy a basic EC2 instance (optionally inside a simple VPC)
    • Output connection details
    • Store state in S3 with DynamoDB locking for team safety
  • A module structure you can clone for future services

Troubleshooting and Help

  • Use terraform init -upgrade if providers appear outdated
  • Validate AWS credentials with aws sts get-caller-identity
  • Run terraform plan to preview changes before apply
  • If a lock persists, check and clear it via the DynamoDB console (only if safe)
  • See docs/08_test.md for additional verification ideas

When youre ready, start with installation in docs/01_install_setup.md.