Terraform AWS
Provision and manage AWS infrastructure with Terraform.
Provider Configuration
terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 5.0" } }
backend "s3" { bucket = "terraform-state" key = "prod/terraform.tfstate" region = "us-east-1" } }
provider "aws" { region = var.region
default_tags { tags = { Environment = var.environment ManagedBy = "terraform" } } }
Example Resources
resource "aws_vpc" "main" { cidr_block = "10.0.0.0/16" enable_dns_hostnames = true
tags = { Name = "main-vpc" } }
resource "aws_instance" "web" { ami = data.aws_ami.amazon_linux.id instance_type = "t3.micro" subnet_id = aws_subnet.public.id
tags = { Name = "web-server" } }
Modules
module "vpc" { source = "terraform-aws-modules/vpc/aws"
name = "my-vpc" cidr = "10.0.0.0/16"
azs = ["us-east-1a", "us-east-1b"] private_subnets = ["10.0.1.0/24", "10.0.2.0/24"] public_subnets = ["10.0.101.0/24", "10.0.102.0/24"]
enable_nat_gateway = true }
Commands
terraform init terraform plan -out=plan.tfplan terraform apply plan.tfplan terraform destroy
Best Practices
-
Use remote state with locking
-
Implement module structure
-
Use workspaces or separate states per environment
-
Pin provider versions
-
Use data sources for AMIs
Related Skills
-
aws-vpc - VPC networking
-
aws-iam - IAM policies