Terraform
Published by htlin222 in dotfiles
Review recommended34 installs
What this skill does
Write Terraform modules, manage state, and implement IaC. Use for infrastructure automation or state management.
Add Terraform to your agent
Review the source and files first. When you are ready, copy the prompt instruction or use the CLI command supported by your environment.
Install with a prompt
Paste this into a compatible coding agent:
add this skill "terraform" from https://github.com/htlin222/dotfilesInstall with the CLI
Run this command in a controlled environment after reviewing the repository:
npx skills add https://github.com/htlin222/dotfiles --skill terraformSkill instructions
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
Files included
- SKILL.md

