mcpField
S
setting-up-terraform

setting-up-terraform

github.com/spencerpauly云与 DevOps868361 次安装12 周前更新
代码仓库

关于 setting-up-terraform

用于搭建 Terraform 项目,以代码管理基础设施和云资源。内容涵盖项目结构、Provider 与资源配置、状态管理及 CI 检查。

主要功能

  1. 01Terraform 项目结构
  2. 02Provider 与变量配置
  3. 03资源和模块组织
  4. 04远程状态与锁定指导
  5. 05Git 忽略项和 CI 工作流指导

适用场景

  1. 01启动 Terraform 基础设施项目
  2. 02定义云资源和可复用模块
  3. 03准备状态存储与锁定
  4. 04为拉取请求添加 Terraform 检查

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/spencerpauly/awesome-cursor-skills --skill setting-up-terraform

安装后在 Claude Code 中输入/setting-up-terraform确认已加载。

详细介绍

配置 Terraform

当用户要求配置 Terraform、基础设施即代码、云资源配置或 IaC 时,使用此技能。

步骤

  1. 初始化项目结构

    infra/
    ├── main.tf
    ├── variables.tf
    ├── outputs.tf
    ├── terraform.tfvars      # (gitignored)
    ├── providers.tf
    └── modules/
    
  2. 配置提供程序——在 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
    }
    

    根据用户使用的云平台(AWS、GCP、Azure)调整提供程序。

  3. 定义变量——在 variables.tf 中定义输入项,并指定类型、描述和默认值:

    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. 创建资源——在 main.tf 中定义用户需要的基础设施(VPC、RDS、ECS、S3、Lambda 等)。将可复用的模式提取到 modules/ 下的模块中。

  5. 配置远程状态——使用 S3 存储桶(AWS)、GCS 存储桶(GCP)或 Azure Storage 存储状态。使用 DynamoDB(AWS)启用状态锁定。

  6. 添加到 .gitignore

    *.tfstate
    *.tfstate.*
    .terraform/
    terraform.tfvars
    *.tfvars
    
  7. 添加 CI 流水线——创建 GitHub Actions 工作流,在 PR 上运行 terraform fmt -check、terraform validate 和 terraform plan,并在合并到 main 时运行 terraform apply(设置审批关卡)。

注意事项

  • 切勿提交状态文件或包含机密信息的 .tfvars 文件。
  • 使用工作区或单独的状态文件来区分 dev/staging/prod。
  • 固定提供程序版本,避免出现破坏性变更。
  • 提交前运行 terraform fmt。

评论

支持 Markdown