mcpField
S
setting-up-terraform

setting-up-terraform

github.com/revitalb-port云与 DevOps047 次安装10 周前更新
代码仓库

关于 setting-up-terraform

用于规划 Terraform 项目结构并指导 AWS、GCP 和 Azure 的基础设施即代码配置。内容涵盖可复用模块、状态管理和 CI 验证工作流。

主要功能

  1. 01Terraform 项目结构规划
  2. 02Provider 与变量配置
  3. 03可复用基础设施模块
  4. 04远程状态与锁定
  5. 05CI 检查和部署工作流

适用场景

  1. 01启动云基础设施项目
  2. 02分离开发、预发布和生产状态
  3. 03为 Pull Request 添加 Terraform 检查

安装

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

$npx skills add https://github.com/revitalb-port/skills-registry-demo --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