SuperAPI AI 工具集

terraform-engineer

部署与运维

查看项目

更新于 10-16 23:14

技能介绍

用途

Terraform Engineer 是一个专注于基础设施即代码(Infrastructure as Code)的 Terraform 工程技能,面向在 AWS、Azure 或 GCP 上构建和管理云基础设施的场景。其定位是资深 Terraform 工程师,核心能力包括模块化设计、状态管理以及生产级实践模式。

主要能力

该技能围绕一套核心工作流组织:

  1. 分析基础设施 —— 审查需求、现有代码与云平台。
  2. 设计模块 —— 创建可组合、带校验、接口清晰的模块。
  3. 实现状态 —— 配置带锁定与加密的远程后端。
  4. 加固基础设施 —— 应用安全策略、最小权限与加密。
  5. 校验 —— 运行 terraform fmt 和 terraform validate,然后运行 tflint;若报告错误则修复并重跑,直到所有检查干净通过再继续。
  6. 计划与应用 —— 运行 terraform plan -out=tfplan,仔细审查输出,然后执行 terraform apply tfplan。

技能还包含错误恢复指引:

  • 校验失败(第 5 步):修复报告的错误 → 重跑 terraform validate → 重复直到干净。对于 tflint 警告,需在继续前处理规则违规。
  • 计划失败(第 6 步):
    • 状态漂移 —— 运行 terraform refresh 使状态与真实资源对齐,或使用 terraform state rm / terraform import 重新对齐特定资源,然后重新计划。
    • Provider 认证错误 —— 检查凭据、环境变量与 Provider 配置块;若 Provider 插件过期则重跑 terraform init,然后重新计划。
    • 依赖 / 顺序错误 —— 添加显式 depends_on 引用或重构模块输出以解决未知值,然后重新计划。
    • 任何修复后,返回第 5 步重新校验,再重新运行计划。

参考指南

技能按上下文加载详细指引:

主题 参考文档 加载时机
模块 references/module-patterns.md 创建模块、输入/输出、版本管理
状态 references/state-management.md 远程后端、锁定、工作区、迁移
Provider references/providers.md AWS/Azure/GCP 配置、认证
测试 references/testing.md terraform plan、terratest、策略即代码
最佳实践 references/best-practices.md DRY 模式、命名、安全、成本追踪

约束

必须做:

  • 使用语义化版本并锁定 Provider 版本
  • 启用带锁定与加密的远程状态
  • 使用 validation 块校验输入
  • 使用一致的命名约定并为所有资源打标签
  • 记录模块接口
  • 运行 terraform fmt 和 terraform validate

禁止做:

  • 以明文存储密钥或硬编码环境相关值
  • 生产环境使用本地状态或跳过状态锁定
  • 在无约束的情况下混用 Provider 版本
  • 创建循环模块依赖或跳过输入校验
  • 提交 .terraform 目录

代码示例

最小模块结构

main.tf

resource "aws_s3_bucket" "this" {
  bucket = var.bucket_name
  tags   = var.tags
}

variables.tf

variable "bucket_name" {
  description = "Name of the S3 bucket"
  type        = string

  validation {
    condition     = length(var.bucket_name) > 3
    error_message = "bucket_name must be longer than 3 characters."
  }
}

variable "tags" {
  description = "Tags to apply to all resources"
  type        = map(string)
  default     = {}
}

outputs.tf

output "bucket_id" {
  description = "ID of the created S3 bucket"
  value       = aws_s3_bucket.this.id
}

远程后端配置(S3 + DynamoDB)

terraform {
  backend "s3" {
    bucket         = "my-tf-state"
    key            = "env/prod/terraform.tfstate"
    region         = "us-east-1"
    encrypt        = true
    dynamodb_table = "terraform-lock"
  }
}

Provider 版本锁定

terraform {
  required_version = ">= 1.5.0"

  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 3.0"
    }
  }
}

输出格式

实现 Terraform 方案时,应提供:模块结构(main.tf、variables.tf、outputs.tf)、后端与 Provider 配置、带 tfvars 的示例用法,以及设计决策的简要说明。

适用场景

适用于在 AWS、Azure 或 GCP 上以 Terraform 编写和管理云基础设施的工程任务,包括模块开发、远程状态与锁定配置、Provider 认证配置、多环境工作流,以及基础设施的安全加固与校验。

限制

资料未提供该技能的收费、价格、平台支持范围或具体效果数据。其约束条款明确禁止明文存储密钥、生产环境使用本地状态、无约束混用 Provider 版本、循环模块依赖、跳过输入校验以及提交 .terraform 目录。

引用文档

以下为作者声明的引用来源,保留指定版本、署名和许可。

作者的来源声明