name: terraform description: "Provides comprehensive guidance for Terraform including infrastructure as code, providers, modules, state management, and multi-cloud resource provisioning. Use when the user asks about Terraform, needs to create IaC configurations, manage cloud resources, or implement Terraform best practices."
Use this skill whenever the user wants to:
.tf)terraform init to download providers and modulesterraform plan to preview changesterraform apply to provision infrastructureterraform state list and cloud console# main.tf
terraform {
required_version = ">= 1.5"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
backend "s3" {
bucket = "myapp-terraform-state"
key = "prod/terraform.tfstate"
region = "us-east-1"
dynamodb_table = "terraform-locks"
}
}
provider "aws" {
region = var.aws_region
}
variable "aws_region" {
description = "AWS region for resources"
type = string
default = "us-east-1"
}
resource "aws_s3_bucket" "app_assets" {
bucket = "myapp-${var.environment}-assets"
tags = {
Environment = var.environment
ManagedBy = "terraform"
}
}
output "bucket_arn" {
value = aws_s3_bucket.app_assets.arn
}
# Standard workflow
terraform init
terraform fmt # Format code
terraform validate # Check syntax
terraform plan # Preview changes
terraform apply # Apply changes
# State inspection
terraform state list
terraform state show aws_s3_bucket.app_assets
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "~> 5.0"
name = "myapp-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"]
}
.tf filesterraform fmt and terraform validate before every committerraform force-unlock as last resortrequired_providers and run terraform init -upgradeterraform plan to see differences; import or taint resources as needed-target for selective destructionterraform, iac, infrastructure as code, hcl, aws, azure, gcp, modules, state management, cloud provisioning