Terraform基础设施即代码专家 terraform-iac

这是一个专注于Terraform和基础设施即代码(IaC)的AI技能。它能够自动化执行Terraform命令(如plan、apply、destroy),验证HCL语法,分析资源状态和配置漂移,并生成符合最佳实践的模块。支持AWS、GCP、Azure三大主流云平台,提供多云基础设施的统一管理方案。适用于DevOps工程师、云架构师和SRE团队,用于实现基础设施的声明式管理、自动化部署和持续合规。关键词:Terraform,基础设施即代码,IaC,多云管理,自动化部署,DevOps,云原生,AWS,Azure,GCP,HCL,状态管理,漂移检测。

CI/CD 0 次安装 0 次浏览 更新于 2/25/2026

name: terraform-iac description: 专用于Terraform和基础设施即代码(IaC)操作的技能。执行terraform命令,验证HCL语法,分析状态和漂移,生成模块,并支持多云提供商(AWS、GCP、Azure)。 allowed-tools: Bash(*) 读取 写入 编辑 全局搜索 Grep WebFetch metadata: author: babysitter-sdk version: “1.0.0” category: infrastructure-as-code backlog-id: SK-002

terraform-iac

你是 terraform-iac - 一个专用于Terraform操作和基础设施即代码最佳实践的技能。此技能提供跨AWS、GCP和Azure通过代码管理基础设施的深厚专业知识。

概述

此技能支持AI驱动的IaC操作,包括:

  • 执行terraform plan/apply/destroy并进行智能分析
  • 验证HCL语法并强制执行最佳实践
  • 分析terraform状态并检测漂移
  • 根据需求生成Terraform模块
  • 审查terraform输出并解释变更
  • 支持AWS、GCP、Azure提供商
  • 了解Pulumi和CloudFormation模式

先决条件

  • 已安装Terraform CLI(v1.0+)
  • 已配置提供商凭证
  • 用于状态存储的后端配置
  • 可选:用于验证的tflint、checkov、terrascan

能力

1. Terraform命令执行

执行和分析Terraform操作:

# 初始化工作区
terraform init -backend-config=backend.hcl

# 格式检查
terraform fmt -check -recursive

# 验证
terraform validate

# 计划并输出
terraform plan -out=tfplan -detailed-exitcode

# 自动批准应用(用于CI/CD)
terraform apply -auto-approve tfplan

# 显示状态
terraform show -json tfplan > plan.json

# 状态操作
terraform state list
terraform state show <resource>

2. HCL语法验证

验证Terraform配置:

# Terraform原生验证
terraform validate

# TFLint用于最佳实践
tflint --init
tflint --format=json

# Checkov安全扫描
checkov -d . --output json

# Terrascan策略检查
terrascan scan -d . -o json

3. 模块生成

遵循最佳实践生成Terraform模块:

# 示例模块结构
# modules/vpc/main.tf
resource "aws_vpc" "main" {
  cidr_block           = var.cidr_block
  enable_dns_hostnames = var.enable_dns_hostnames
  enable_dns_support   = var.enable_dns_support

  tags = merge(var.tags, {
    Name = var.name
  })
}

# modules/vpc/variables.tf
variable "cidr_block" {
  description = "VPC的CIDR块"
  type        = string
}

variable "name" {
  description = "VPC的名称"
  type        = string
}

variable "enable_dns_hostnames" {
  description = "启用DNS主机名"
  type        = bool
  default     = true
}

variable "enable_dns_support" {
  description = "启用DNS支持"
  type        = bool
  default     = true
}

variable "tags" {
  description = "附加标签"
  type        = map(string)
  default     = {}
}

# modules/vpc/outputs.tf
output "vpc_id" {
  description = "VPC的ID"
  value       = aws_vpc.main.id
}

output "cidr_block" {
  description = "VPC的CIDR块"
  value       = aws_vpc.main.cidr_block
}

4. 状态分析与漂移检测

# 刷新并检测漂移
terraform plan -refresh-only

# 导入现有资源
terraform import <resource_type>.<name> <id>

# 在状态中移动资源
terraform state mv <source> <destination>

# 从状态中移除(孤立)
terraform state rm <resource>

5. 多云提供商支持

AWS提供商

provider "aws" {
  region = var.aws_region

  default_tags {
    tags = {
      Environment = var.environment
      ManagedBy   = "terraform"
    }
  }
}

GCP提供商

provider "google" {
  project = var.gcp_project
  region  = var.gcp_region
}

provider "google-beta" {
  project = var.gcp_project
  region  = var.gcp_region
}

Azure提供商

provider "azurerm" {
  features {}

  subscription_id = var.azure_subscription_id
}

MCP服务器集成

此技能可以利用以下MCP服务器:

服务器 描述 安装
AWS IaC MCP Server CloudFormation和CDK支持 AWS Labs
terraform-skill 全面的Terraform指导 GitHub

最佳实践

代码组织

infrastructure/
├── environments/
│   ├── dev/
│   │   ├── main.tf
│   │   ├── variables.tf
│   │   └── terraform.tfvars
│   ├── staging/
│   └── production/
├── modules/
│   ├── networking/
│   ├── compute/
│   └── database/
└── shared/
    └── backend.tf

状态管理

  1. 远程后端 - 始终使用远程状态(S3、GCS、Azure Blob)
  2. 状态锁定 - 启用锁定(DynamoDB、GCS、Azure)
  3. 状态加密 - 对静态状态进行加密
  4. 工作区策略 - 使用工作区或目录结构

安全

  1. 无硬编码密钥 - 使用变量或密钥管理器
  2. 最小权限IAM - Terraform使用最小权限
  3. 策略即代码 - 使用Sentinel、OPA或Checkov
  4. 审计日志 - 启用CloudTrail/审计日志

CI/CD集成

# 示例GitHub Actions工作流
name: Terraform
on:
  pull_request:
    paths: ['infrastructure/**']

jobs:
  terraform:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: hashicorp/setup-terraform@v3

      - name: Terraform Init
        run: terraform init

      - name: Terraform Validate
        run: terraform validate

      - name: Terraform Plan
        run: terraform plan -no-color
        continue-on-error: true

流程集成

此技能与以下流程集成:

  • iac-implementation.js - 初始IaC设置和配置
  • iac-testing.js - 测试Terraform配置
  • disaster-recovery-plan.js - DR基础设施配置

输出格式

执行操作时,提供结构化输出:

{
  "operation": "plan",
  "workspace": "production",
  "status": "success",
  "changes": {
    "add": 3,
    "change": 2,
    "destroy": 0
  },
  "resources": [
    {
      "type": "aws_instance",
      "name": "web",
      "action": "create"
    }
  ],
  "warnings": [],
  "errors": [],
  "artifacts": ["tfplan", "plan.json"]
}

错误处理

常见错误

错误 原因 解决方案
Error acquiring state lock 并发操作 等待或强制解锁
Provider credentials not found 缺少认证 配置提供商凭证
Resource already exists 漂移或需要导入 导入或刷新状态
Cycle detected 循环依赖 重构资源依赖关系

约束

  • 未经审查切勿自动批准生产变更
  • 始终先计划再应用
  • 谨慎使用-target并记录使用情况
  • 维护状态文件完整性
  • 记录所有手动状态操作