Terraform: Install, Source and Security | FunnelSlayer

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/dotfiles

Install with the CLI

Run this command in a controlled environment after reviewing the repository:

npx skills add https://github.com/htlin222/dotfiles --skill terraform

Skill 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

More skills