界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
部署与运维 · SKILL.md

setting-up-terraform

setting-up-terraform

【部署与运维】Set up Terraform infrastructure-as-code for cloud resources, including provider configuration, modules, state management, and CI integration.

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: setting-up-terraform description: Set up Terraform infrastructure-as-code for cloud resources, including provider configuration, modules, state management, and CI integration.

Setup Terraform

Use this skill when the user asks to set up Terraform, infrastructure as code, cloud provisioning, or IaC.

Steps

  1. Initialize the project structure

    infra/
    ├── main.tf
    ├── variables.tf
    ├── outputs.tf
    ├── terraform.tfvars      # (gitignored)
    ├── providers.tf
    └── modules/
    
  2. Configure the provider — in providers.tf:

    terraform {
      required_version = ">= 1.5"
      required_providers {
        aws = {
          source  = "hashicorp/aws"
          version = "~> 5.0"
        }
      }
      backend "s3" {
        bucket = "my-terraform-state"
        key    = "prod/terraform.tfstate"
        region = "us-east-1"
      }
    }
    
    provider "aws" {
      region = var.aws_region
    }
    

    Adapt the provider for the user's cloud (AWS, GCP, Azure).

  3. Define variables — in variables.tf, define inputs with types, descriptions, and defaults:

    variable "aws_region" {
      type        = string
      default     = "us-east-1"
      description = "AWS region for resources"
    }
    
    variable "environment" {
      type        = string
      description = "Deployment environment (dev, staging, prod)"
    }
    
  4. Create resources — in main.tf, define the infrastructure the user needs (VPC, RDS, ECS, S3, Lambda, etc.). Extract reusable patterns into modules under modules/.

  5. Configure remote state — use an S3 bucket (AWS), GCS bucket (GCP), or Azure Storage for state. Enable state locking with DynamoDB (AWS).

  6. Add to .gitignore

    *.tfstate
    *.tfstate.*
    .terraform/
    terraform.tfvars
    *.tfvars
    
  7. Add CI pipeline — create a GitHub Actions workflow that runs terraform fmt -check, terraform validate, and terraform plan on PRs, with terraform apply on merge to main (with approval gate).

Notes

  • Never commit state files or .tfvars with secrets.
  • Use workspaces or separate state files for dev/staging/prod.
  • Pin provider versions to avoid breaking changes.
  • Run terraform fmt before committing.
我的收藏