terraform

Infrastructure as Code with Terraform.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "terraform" with this command: npx skills add htlin222/dotfiles/htlin222-dotfiles-terraform

Terraform

Infrastructure as Code with Terraform.

When to Use

  • Creating infrastructure modules

  • Managing Terraform state

  • Multi-environment deployments

  • Importing existing resources

  • Troubleshooting drift

Module Structure

modules/ └── vpc/ ├── main.tf # Resources ├── variables.tf # Input variables ├── outputs.tf # Output values └── versions.tf # Provider requirements

Best Practices

Variables

variable "environment" { description = "Environment name" type = string validation { condition = contains(["dev", "staging", "prod"], var.environment) error_message = "Environment must be dev, staging, or prod." } }

variable "tags" { description = "Resource tags" type = map(string) default = {} }

Resources

resource "aws_instance" "main" { ami = data.aws_ami.latest.id instance_type = var.instance_type

tags = merge(var.tags, { Name = "${var.project}-${var.environment}" })

lifecycle { create_before_destroy = true } }

Outputs

output "instance_id" { description = "EC2 instance ID" value = aws_instance.main.id }

State Management

backend.tf

terraform { backend "s3" { bucket = "terraform-state-bucket" key = "project/terraform.tfstate" region = "us-east-1" encrypt = true dynamodb_table = "terraform-locks" } }

Common Commands

Initialize and plan

terraform init terraform plan -out=tfplan

Apply with auto-approve (CI/CD)

terraform apply -auto-approve tfplan

Import existing resource

terraform import aws_instance.main i-1234567890abcdef0

State operations

terraform state list terraform state show aws_instance.main terraform state mv aws_instance.old aws_instance.new

Workspace Strategy

Create workspaces per environment

terraform workspace new dev terraform workspace new prod

Use in configuration

locals { env_config = { dev = { instance_type = "t3.micro" } prod = { instance_type = "t3.large" } } config = local.env_config[terraform.workspace] }

Examples

Input: "Create a VPC module" Action: Create module with subnets, route tables, NAT gateway, proper outputs

Input: "Fix state drift" Action: Run plan, identify drift, decide refresh vs import vs manual fix

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

devops

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

python

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

code-review

No summary provided by upstream source.

Repository SourceNeeds Review