<!-- title: Claude Code云原生基础设施实战：Terraform到K8s交付 -->

# Claude Code云原生基础设施实战：Terraform到K8s交付全链路

## 概述

本教程面向DevOps工程师和云架构师，系统讲解如何利用Claude Code构建完整的云原生基础设施开发工作流。从Terraform模块设计到Kubernetes Helm Chart交付，从安全审查到成本优化，覆盖IaC开发全链路。适合有基本云服务经验的工程师，预计学习时间4-6小时。

## 前置条件

- Claude Code已安装并配置（`npm install -g @anthropic-ai/claude-code`）
- Terraform >= 1.7.x 或 OpenTofu >= 1.8.x
- kubectl + Helm 3.x
- Docker >= 24.x
- AWS CLI / gcloud CLI 已配置凭证
- 基本Terraform和Kubernetes知识

---

## 一、项目架构总览

云原生基础设施的核心思路是"一切皆代码"——网络、计算、存储、安全策略全部用声明式代码定义。Claude Code在这一流程中扮演三个角色：**代码生成器**、**审查员**和**运维助手**。

```mermaid
flowchart TB
    subgraph "Claude Code驱动的基础设施工作流"
        A[CLAUDE.md项目配置] --> B[Terraform模块开发]
        B --> C[terraform validate/plan]
        C --> D{Plan通过?}
        D -->|是| E[安全扫描 Checkov]
        D -->|否| F[Claude Code修复错误]
        F --> C
        E --> G[Docker镜像构建]
        G --> H[K8s清单/Helm Chart]
        H --> I[kubectl apply / helm install]
        I --> J[监控与成本追踪]

        K[Git Commit] --> L[CI/CD Pipeline]
        L --> B
    end

    style A fill:#f9f,stroke:#333
    style F fill:#ff9,stroke:#333
    style J fill:#9f9,stroke:#333
```

整个工作流分为五个阶段：**规划→编码→验证→交付→运维**。Claude Code在每个阶段都有明确的介入点。

---

## 二、项目初始化与CLAUDE.md配置

### 2.1 创建项目结构

```bash
mkdir cloud-infra-project && cd cloud-infra-project
mkdir -p terraform/{modules,environments/{dev,staging,prod}}
mkdir -p k8s/{base,overlays/{dev,staging,prod}}
mkdir -p helm-charts/myapp
mkdir -p docker
mkdir -p scripts
```

预期项目结构：

```
cloud-infra-project/
├── CLAUDE.md                    # Claude Code项目指令
├── terraform/
│   ├── modules/
│   │   ├── vpc/
│   │   ├── eks/
│   │   ├── rds/
│   │   └── s3/
│   └── environments/
│       ├── dev/
│       ├── staging/
│       └── prod/
├── k8s/
│   ├── base/
│   └── overlays/
├── helm-charts/
├── docker/
└── scripts/
```

### 2.2 编写CLAUDE.md

CLAUDE.md是Claude Code理解项目上下文的核心文件。对于基础设施项目，需要明确编码规范、安全基线和工作流约束。

```markdown
# Cloud Infrastructure Project

## Project Overview
云原生基础设施项目，使用Terraform管理AWS资源，Kubernetes编排容器，Helm交付应用。

## Tech Stack
- Infrastructure: Terraform 1.7+ / OpenTofu
- Container Orchestration: Kubernetes (EKS 1.29)
- Container Runtime: Docker with multi-stage builds
- Package Management: Helm 3.x
- Cloud Provider: AWS (primary), with GCP support planned

## Terraform Conventions
- 所有资源必须添加 `tags` 块，包含 Environment、Project、ManagedBy 字段
- 变量定义在 `variables.tf`，输出在 `outputs.tf`，资源按模块拆分
- 使用 `locals` 进行命名约定：`${local.project}-${local.environment}-${resource}`
- State存储在S3后端，启用DynamoDB锁定
- 禁止硬编码AWS Account ID或Region，使用 `data "aws_caller_identity"` 和变量
- 模块版本必须锁定：`source = "...?ref=v1.2.3"`
- 敏感变量必须标记 `sensitive = true`
- 始终运行 `terraform fmt` 和 `terraform validate` 后再提交

## Kubernetes Conventions
- 使用Kustomize管理多环境配置（base + overlay模式）
- 所有Deployment必须设置 `resources.requests` 和 `resources.limits`
- 必须配置 `livenessProbe` 和 `readinessProbe`
- 使用NetworkPolicy限制Pod间通信
- 镜像标签禁止使用 `latest`，必须指定具体版本

## Docker Conventions
- 多阶段构建，最终镜像基于distroless或alpine
- 禁止以root用户运行应用
- 使用 `.dockerignore` 排除不必要文件

## Security Requirements
- 安全组遵循最小权限原则
- 所有S3桶启用版本控制和加密
- RDS启用加密和自动备份
- 定期运行 `checkov` 扫描Terraform代码
- IAM策略遵循最小权限

## Commands
- 格式化: `terraform fmt -recursive`
- 验证: `terraform validate`
- 计划: `terraform plan -out=tfplan`
- 安全扫描: `checkov -d terraform/ --framework terraform`
- K8s验证: `kubectl apply --dry-run=client -f k8s/`
```

**关键点**：CLAUDE.md中的约束条件直接影响Claude Code的生成行为。明确的"禁止"和"必须"规则能将安全合规要求嵌入日常开发流程。

### 2.3 验证配置生效

```bash
claude "请描述当前项目的目录结构和规范要求"
```

Claude Code应正确读取CLAUDE.md并复述项目结构、命名约定和安全要求。

---

## 三、Terraform模块开发

### 3.1 VPC模块——网络基础设施基石

用自然语言描述需求，让Claude Code生成符合规范的HCL代码：

```bash
claude "在 terraform/modules/vpc/ 下创建一个生产级VPC模块，要求：
1. 支持多AZ部署（3个可用区）
2. 公有子网、私有子网、数据库子网分离
3. 启用NAT Gateway（每个AZ一个）
4. VPC Flow Log发送到CloudWatch
5. 使用locals进行命名约定
6. 所有资源添加标准tags"
```

Claude Code生成的核心文件：

**`terraform/modules/vpc/variables.tf`**：

```hcl
variable "vpc_cidr" {
  description = "VPC CIDR block"
  type        = string
  default     = "10.0.0.0/16"
}

variable "environment" {
  description = "Environment name"
  type        = string
}

variable "project" {
  description = "Project name"
  type        = string
}

variable "availability_zones" {
  description = "List of availability zones"
  type        = list(string)
  default     = ["us-east-1a", "us-east-1b", "us-east-1c"]
}

variable "public_subnets" {
  description = "CIDR blocks for public subnets"
  type        = list(string)
  default     = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
}

variable "private_subnets" {
  description = "CIDR blocks for private subnets"
  type        = list(string)
  default     = ["10.0.10.0/24", "10.0.20.0/24", "10.0.30.0/24"]
}

variable "database_subnets" {
  description = "CIDR blocks for database subnets"
  type        = list(string)
  default     = ["10.0.100.0/24", "10.0.200.0/24", "10.0.300.0/24"]
}
```

**`terraform/modules/vpc/main.tf`**（关键部分）：

```hcl
locals {
  name_prefix = "${var.project}-${var.environment}"
  common_tags = {
    Environment = var.environment
    Project     = var.project
    ManagedBy   = "terraform"
  }
}

resource "aws_vpc" "main" {
  cidr_block           = var.vpc_cidr
  enable_dns_hostnames = true
  enable_dns_support   = true

  tags = merge(local.common_tags, {
    Name = "${local.name_prefix}-vpc"
  })
}

# 公有子网
resource "aws_subnet" "public" {
  count                   = length(var.public_subnets)
  vpc_id                  = aws_vpc.main.id
  cidr_block              = var.public_subnets[count.index]
  availability_zone       = var.availability_zones[count.index]
  map_public_ip_on_launch = true

  tags = merge(local.common_tags, {
    Name = "${local.name_prefix}-public-${count.index + 1}"
    Tier = "public"
  })
}

# 私有子网
resource "aws_subnet" "private" {
  count             = length(var.private_subnets)
  vpc_id            = aws_vpc.main.id
  cidr_block        = var.private_subnets[count.index]
  availability_zone = var.availability_zones[count.index]

  tags = merge(local.common_tags, {
    Name = "${local.name_prefix}-private-${count.index + 1}"
    Tier = "private"
  })
}

# NAT Gateway（每AZ一个）
resource "aws_eip" "nat" {
  count  = length(var.public_subnets)
  domain = "vpc"

  tags = merge(local.common_tags, {
    Name = "${local.name_prefix}-nat-eip-${count.index + 1}"
  })
}

resource "aws_nat_gateway" "main" {
  count         = length(var.public_subnets)
  allocation_id = aws_eip.nat[count.index].id
  subnet_id     = aws_subnet.public[count.index].id

  tags = merge(local.common_tags, {
    Name = "${local.name_prefix}-nat-${count.index + 1}"
  })

  depends_on = [aws_internet_gateway.main]
}

# VPC Flow Logs
resource "aws_flow_log" "main" {
  vpc_id          = aws_vpc.main.id
  traffic_type    = "ALL"
  iam_role_arn    = aws_iam_role.flow_log.arn
  log_destination = aws_cloudwatch_log_group.flow_log.arn

  tags = merge(local.common_tags, {
    Name = "${local.name_prefix}-flow-log"
  })
}
```

### 3.2 环境配置——dev环境实例

```bash
claude "在 terraform/environments/dev/ 下创建dev环境配置：
1. 引用上述VPC模块
2. 使用 dev-test 的CIDR范围（10.1.0.0/16）
3. 只用2个AZ（节省成本）
4. 配置S3后端存储state
5. 创建provider配置，region从变量读取"
```

Claude Code会自动按照CLAUDE.md中的命名约定和tag规范生成配置。

### 3.3 Terraform工作流验证

```bash
# Claude Code可以直接在终端执行terraform命令
claude "在dev环境下运行 terraform init、fmt、validate，报告所有错误和警告"
```

Claude Code会自动：
1. 切换到正确目录
2. 运行 `terraform init -backend=false`
3. 运行 `terraform fmt -recursive` 检查格式
4. 运行 `terraform validate` 检查语法
5. 解释发现的错误并提供修复建议

**常见问题与解决**：

| 问题 | 原因 | Claude Code修复方式 |
|------|------|-------------------|
| `Invalid value for module source` | 模块路径错误 | 自动修正相对路径引用 |
| `Missing required argument` | 变量未传值 | 添加默认值或在tfvars中补充 |
| `Provider configuration not present` | provider块缺失 | 自动添加provider配置 |
| `Cycle detected` | 资源循环依赖 | 重构资源依赖关系图 |

---

## 四、安全审查与合规检查

### 4.1 Checkov集成

```bash
claude "在项目根目录创建 scripts/security-scan.sh 脚本：
1. 运行 checkov 扫描 terraform/ 目录
2. 运行 trivy 扫描 docker/ 目录
3. 输出报告到 security-reports/ 目录
4. 退出码表示是否有高危漏洞"
```

生成的扫描脚本：

```bash
#!/bin/bash
set -euo pipefail

REPORT_DIR="security-reports/$(date +%Y%m%d-%H%M%S)"
mkdir -p "$REPORT_DIR"

echo "=== Terraform Security Scan ==="
checkov -d terraform/ \
  --framework terraform \
  --output cli \
  --output junitxml \
  --output-file-plan "${REPORT_DIR}/terraform-checkov.xml" \
  --soft-fail-on LOW \
  --hard-fail-on CRITICAL,HIGH

echo "=== Docker Security Scan ==="
for dockerfile in docker/*/Dockerfile; do
  trivy config "$dockerfile" --format json > "${REPORT_DIR}/trivy-$(basename $(dirname $dockerfile)).json"
done

echo "Reports saved to ${REPORT_DIR}"
```

### 4.2 Claude Code辅助修复安全问题

当Checkov发现安全问题时，直接让Claude Code修复：

```bash
claude "Checkov报告了以下问题，请逐一修复：
1. CKV_AWS_79: S3桶未启用加密
2. CKV_AWS_18: S3桶未配置访问日志
3. CKV_AWS_23: 安全组规则过于宽松（0.0.0.0/0）
4. CKV_AWS_35: RDS未启用加密"
```

Claude Code会为每个检查项生成修复代码，并解释修复原因。例如修复CKV_AWS_23：

```hcl
# Before (不安全)
resource "aws_security_group_rule" "ingress" {
  type        = "ingress"
  from_port   = 443
  to_port     = 443
  protocol    = "tcp"
  cidr_blocks = ["0.0.0.0/0"]  # Checkov: CKV_AWS_23
}

# After (修复后)
resource "aws_security_group_rule" "ingress" {
  type        = "ingress"
  from_port   = 443
  to_port     = 443
  protocol    = "tcp"
  cidr_blocks = [var.allowed_cidr_blocks]  # 限制为已知IP范围
  description = "HTTPS access from known networks"
}
```

### 4.3 Terraform安全审查Skill

安装社区维护的Terraform安全审查Skill，提升Claude Code在IaC安全方面的专业能力：

```bash
# 安装antonbabenko的terraform-skill
mkdir -p ~/.claude/skills
git clone https://github.com/antonbabenko/terraform-skill ~/.claude/skills/terraform
```

该Skill内置了Terraform最佳实践、模块结构建议、安全策略检查规则等知识库，使Claude Code能更专业地处理IaC任务。

---

## 五、Docker容器化

### 5.1 多阶段构建

```bash
claude "在 docker/app/ 下为Node.js应用创建生产级Dockerfile：
1. 多阶段构建（build → production）
2. 最终镜像基于node:20-alpine
3. 创建非root用户运行应用
4. 使用.dockerignore排除node_modules等
5. 添加健康检查
6. 遵循CLAUDE.md中的容器规范"
```

Claude Code生成：

```dockerfile
# Stage 1: Build
FROM node:20-alpine AS builder

WORKDIR /app

# 先复制依赖文件，利用Docker缓存
COPY package.json package-lock.json ./
RUN npm ci --only=production && \
    npm cache clean --force

# 复制源码并构建
COPY . .
RUN npm run build

# Stage 2: Production
FROM node:20-alpine AS production

# 安装dumb-init作为PID 1
RUN apk add --no-cache dumb-init

# 创建非root用户
RUN addgroup -g 1001 -S appgroup && \
    adduser -S appuser -u 1001 -G appgroup

WORKDIR /app

# 只复制构建产物和必要依赖
COPY --from=builder --chown=appuser:appgroup /app/dist ./dist
COPY --from=builder --chown=appuser:appgroup /app/node_modules ./node_modules
COPY --from=builder --chown=appuser:appgroup /app/package.json ./

USER appuser

EXPOSE 3000

HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
  CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1

ENTRYPOINT ["dumb-init", "--"]
CMD ["node", "dist/server.js"]
```

### 5.2 容器安全扫描

```bash
claude "使用trivy扫描刚才构建的Docker镜像，检查是否有高危CVE漏洞"
```

Claude Code会执行 `trivy image` 命令，解析输出，并根据严重程度给出修复建议——如升级基础镜像版本、替换不安全的依赖包。

---

## 六、Kubernetes清单与Kustomize

### 6.1 Base清单生成

```bash
claude "在 k8s/base/ 下为上述应用创建K8s清单：
1. Deployment（2 replicas，含resources限制）
2. Service（ClusterIP类型）
3. HorizontalPodAutoscaler
4. NetworkPolicy（只允许同namespace流量）
5. PodDisruptionBudget
6. 必须配置liveness和readiness探针
7. 使用kustomization.yaml组织"
```

Claude Code生成的 **`k8s/base/deployment.yaml`**：

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  labels:
    app: myapp
spec:
  replicas: 2
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      securityContext:
        runAsNonRoot: true
        runAsUser: 1001
        fsGroup: 1001
      containers:
        - name: myapp
          image: myapp:latest  # kustomize会替换tag
          ports:
            - containerPort: 3000
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 500m
              memory: 512Mi
          livenessProbe:
            httpGet:
              path: /health
              port: 3000
            initialDelaySeconds: 15
            periodSeconds: 20
          readinessProbe:
            httpGet:
              path: /health
              port: 3000
            initialDelaySeconds: 5
            periodSeconds: 10
          securityContext:
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            capabilities:
              drop:
                - ALL
```

### 6.2 环境Overlay配置

```bash
claude "创建 k8s/overlays/prod/ 的Kustomize overlay：
1. 副本数增加到5
2. 资源限制提高到 1 CPU / 1Gi 内存
3. 添加HPA（目标CPU 70%）
4. 配置生产环境ConfigMap和Secret引用
5. 添加PodDisruptionBudget（minAvailable: 3）"
```

---

## 七、Helm Chart开发

### 7.1 Chart骨架

```bash
claude "在 helm-charts/myapp/ 下创建完整的Helm Chart：
1. Chart.yaml 和 values.yaml
2. templates/ 包含 deployment、service、ingress、hpa、networkpolicy
3. _helpers.tpl 定义通用标签模板
4. values.yaml 提供合理的默认值和注释说明
5. 支持通过values覆盖所有关键参数"
```

Claude Code生成的 **`helm-charts/myapp/values.yaml`**：

```yaml
# -- 部署副本数
replicaCount: 2

image:
  # -- 镜像仓库地址
  repository: 123456789.dkr.ecr.us-east-1.amazonaws.com/myapp
  # -- 镜像拉取策略
  pullPolicy: IfNotPresent
  # -- 镜像标签（禁止使用latest）
  tag: ""

# -- 镜像拉取Secret（ECR私有仓库需要）
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""

service:
  type: ClusterIP
  port: 80
  targetPort: 3000

ingress:
  enabled: false
  className: alb
  annotations: {}
  hosts: []
  tls: []

resources:
  requests:
    cpu: 100m
    memory: 128Mi
  limits:
    cpu: 500m
    memory: 512Mi

autoscaling:
  enabled: true
  minReplicas: 2
  maxReplicas: 10
  targetCPUUtilizationPercentage: 70

# -- 安全上下文
securityContext:
  runAsNonRoot: true
  runAsUser: 1001
  fsGroup: 1001

# -- 网络策略
networkPolicy:
  enabled: true
  ingressFrom: []
```

### 7.2 模板验证

```bash
claude "验证Helm Chart：
1. helm lint helm-charts/myapp/
2. helm template 渲染并检查输出
3. 确保所有模板都能正确渲染"
```

Claude Code会执行helm命令并分析输出，确保：
- 模板语法正确
- 默认values能正常渲染
- 必需字段没有遗漏
- 资源限制和安全上下文已设置

---

## 八、GitOps与CI/CD集成

### 8.1 GitHub Actions工作流

```bash
claude "创建 .github/workflows/infrastructure.yml：
1. PR触发时运行 terraform plan + checkov 扫描
2. main分支合并时运行 terraform apply
3. 包含terraform fmt检查
4. plan结果作为PR评论输出
5. 使用OIDC认证（不使用长期AK/SK）"
```

核心工作流片段：

```yaml
name: Infrastructure Pipeline

on:
  pull_request:
    paths:
      - 'terraform/**'
  push:
    branches: [main]
    paths:
      - 'terraform/**'

permissions:
  id-token: write
  contents: read
  pull-requests: write

jobs:
  terraform:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
          aws-region: us-east-1

      - name: Terraform Format Check
        run: terraform fmt -recursive -check terraform/

      - name: Security Scan
        uses: bridgecrewio/checkov-action@master
        with:
          directory: terraform/
          framework: terraform
          soft_fail_on: LOW
          hard_fail_on: CRITICAL,HIGH

      - name: Terraform Plan
        run: |
          cd terraform/environments/${{ github.ref_name == 'main' && 'prod' || 'dev' }}
          terraform init
          terraform plan -out=tfplan

      - name: Terraform Apply
        if: github.ref == 'refs/heads/main'
        run: |
          cd terraform/environments/prod
          terraform apply -auto-approve tfplan
```

### 8.2 OIDC认证配置

```bash
claude "创建Terraform模块来配置GitHub Actions OIDC认证：
1. IAM Identity Provider（GitHub OIDC）
2. IAM Role with Web Identity
3. 最小权限策略（仅允许需要的terraform操作）
4. Trust policy限制为特定仓库和分支"
```

---

## 九、完整实战案例：微服务应用基础设施

### 9.1 需求场景

一个三层微服务应用（API Gateway → Order Service → Inventory Service），需要：
- EKS集群运行容器化服务
- RDS PostgreSQL作为持久层
- ElastiCache Redis作为缓存层
- ALB作为入口流量分发
- CloudWatch监控和告警

### 9.2 一键生成

```bash
claude "基于项目CLAUDE.md规范，生成完整的微服务基础设施代码：
1. terraform/modules/eks/ — EKS集群模块（托管节点组）
2. terraform/modules/rds/ — PostgreSQL模块（Multi-AZ）
3. terraform/modules/elasticache/ — Redis模块
4. terraform/environments/prod/ — 组合所有模块
5. helm-charts/order-service/ 和 helm-charts/inventory-service/
6. k8s/overlays/prod/ — 包含HPA和NetworkPolicy

架构约束：
- EKS节点组使用Spot实例降低成本
- RDS使用Graviton实例
- 所有跨服务通信通过Service Mesh
- 启用X-Ray分布式追踪"
```

### 9.3 架构验证流程

```mermaid
sequenceDiagram
    participant Dev as 开发者
    participant CC as Claude Code
    participant TF as Terraform
    participant CK as Checkov
    participant K8s as Kubernetes

    Dev->>CC: 描述基础设施需求
    CC->>CC: 读取CLAUDE.md规范
    CC->>TF: 生成Terraform代码
    CC->>TF: terraform fmt + validate
    TF-->>CC: 验证结果
    
    alt 验证失败
        CC->>CC: 自动修复错误
        CC->>TF: 重新验证
    end
    
    CC->>CK: 运行安全扫描
    CK-->>CC: 安全报告
    
    alt 发现高危问题
        CC->>CC: 生成修复补丁
        CC->>Dev: 展示修复建议
    end
    
    CC->>TF: terraform plan
    TF-->>CC: 变更计划
    CC->>Dev: 展示计划摘要
    
    Dev->>CC: 确认应用
    CC->>TF: terraform apply
    
    CC->>K8s: 部署Helm Charts
    K8s-->>CC: 部署状态
    CC->>Dev: 完整交付报告
```

### 9.4 成本优化提示

在基础设施开发中，Claude Code可以帮助识别成本优化机会：

```bash
claude "分析 terraform/environments/prod/ 的配置，识别以下成本优化机会：
1. 是否有可使用Spot实例的工作负载
2. RDS实例类型是否right-sized
3. NAT Gateway数量是否合理（每个$32/月）
4. 是否有不必要的Elastic IP
5. S3生命周期策略是否完善
6. 给出预估月度成本"
```

Claude Code会逐项分析并给出具体建议，例如：
- "建议将开发环境的NAT Gateway从3个减少到1个，月省约$64"
- "RDS db.r6g.large 在非高峰期可以使用 db.r6g.xlarge + 自动扩缩"
- "建议添加 `aws_instance` 的 `spot_instance` 配置，降低计算成本60-70%"

---

## 十、高级技巧与最佳实践

### 10.1 Terraform模块测试

```bash
claude "使用terratest为VPC模块编写集成测试：
1. 测试VPC创建成功
2. 验证子网数量和CIDR
3. 验证NAT Gateway数量
4. 验证Flow Log配置
5. 测试放在 terraform/modules/vpc/test/ 下"
```

### 10.2 Drift检测

```bash
claude "创建 scripts/drift-detect.sh 脚本：
1. 对每个环境运行 terraform plan -detailed-exitcode
2. 如果检测到drift（exit code 2），发送告警
3. 生成drift报告：哪些资源被手动修改
4. 可以与cron或GitHub Actions定时任务集成"
```

### 10.3 多云抽象

```bash
claude "创建 terraform/modules/abstract-database/ 模块：
1. 使用terraform条件表达式选择AWS RDS或GCP Cloud SQL
2. 统一的变量接口（engine, version, size）
3. 统一的输出接口（endpoint, port, connection_string）
4. 具体实现在 modules/rds/ 和 modules/cloud-sql/ 中"
```

### 10.4 状态管理自动化

```bash
claude "创建Terraform状态管理脚本：
1. scripts/state-bootstrap.sh — 初始化S3后端和DynamoDB锁表
2. scripts/state-import.sh — 导入现有资源到state
3. scripts/state-mv.sh — 安全的资源移动（模块重构用）
4. 所有操作前先备份state文件"
```

### 10.5 Prompt模式总结

| 场景 | Prompt模式 | 示例 |
|------|-----------|------|
| 新模块创建 | 需求描述 + 规范约束 | "创建VPC模块，要求多AZ、Flow Log、标准tags" |
| 问题修复 | 错误信息 + 上下文 | "terraform plan报错xxx，请修复" |
| 安全审查 | 工具输出 + 修复要求 | "Checkov发现CKV_AWS_23，请修复所有安全组" |
| 成本优化 | 配置分析 + 目标 | "分析prod环境，识别月度成本可优化项" |
| 代码审查 | 变更范围 + 审查标准 | "审查PR #42的terraform变更，关注安全合规" |

---

## 工作流程总览

```mermaid
graph LR
    subgraph "开发阶段"
        A1[编写CLAUDE.md] --> A2[生成Terraform模块]
        A2 --> A3[生成Dockerfile]
        A3 --> A4[生成K8s清单/Helm]
    end

    subgraph "验证阶段"
        B1[terraform fmt] --> B2[terraform validate]
        B2 --> B3[checkov安全扫描]
        B3 --> B4[trivy镜像扫描]
        B4 --> B5[helm lint]
    end

    subgraph "交付阶段"
        C1[terraform plan] --> C2[人工审核]
        C2 --> C3[terraform apply]
        C3 --> C4[helm install/upgrade]
        C4 --> C5[监控验证]
    end

    A4 --> B1
    B5 --> C1
```

---

## 延伸阅读

- [Anthropic官方Claude Code最佳实践](https://code.claude.com/docs/en/best-practices) — Claude Code使用规范与模式
- [Terraform Skill for Claude Code](https://github.com/antonbabenko/terraform-skill) — 社区维护的Terraform专业Skill
- [Developer Toolkit - Infrastructure as Code](https://developertoolkit.ai/en/shared-workflows/deployment-operations/infrastructure-code/) — Terraform/CloudFormation AI工作流模板
- [Claude Code for AWS Infrastructure](https://blog.harun.dev/claude-code-for-aws-infrastructure-agentic-devops-workflow-with-terraform) — AWS Terraform Agentic DevOps实战

## 训练营适用性评估

| 维度 | 评估 |
|------|------|
| 目标受众 | DevOps工程师、云架构师、SRE |
| 前置知识 | Terraform基础、K8s基础、AWS/GCP经验 |
| 教学时长 | 4-6小时（含动手实操） |
| 训练营类型 | DevOps训练营、云原生实战营 |
| 难度级别 | 中高级（★★★☆☆） |
| 实验环境需求 | AWS沙箱账号 + kubectl集群 |
| 产出物 | 完整的Terraform模块库 + Helm Chart + CI/CD Pipeline |

## 参考来源

1. [Deploy Infrastructure with Claude Code and Terraform](https://computingforgeeks.com/claude-code-terraform-guide/) — Claude Code Terraform部署实战指南，包含完整demo
2. [Claude Code Best Practices - 官方文档](https://code.claude.com/docs/en/best-practices) — Anthropic官方Claude Code最佳实践，涵盖CLAUDE.md编写规范
3. [Terraform & OpenTofu Skill for Claude Code](https://github.com/antonbabenko/terraform-skill) — antonbabenko维护的Terraform Skill，包含最佳实践知识库
4. [Claude Code for AWS Infrastructure: Agentic DevOps Workflow](https://blog.harun.dev/claude-code-for-aws-infrastructure-agentic-devops-workflow-with-terraform) — AWS基础设施Agentic DevOps完整工作流
5. [Infrastructure as Code with AI Assistants](https://developertoolkit.ai/en/shared-workflows/deployment-operations/infrastructure-code/) — AI驱动的Terraform/CloudFormation开发模式

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
