--- title: "Learning Sessions Cloud Transformation Programme-Deploying RDS via Terraform" type: source tags: [Terraform, RDS, IaC, CTP, DevOps, DBRE, AWS] date: 2026-04-14 --- ## Source File - [[raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/03_Terraform/learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform.md]] ## Summary(用中文描述) - 核心主题:**通过 Terraform 在 AWS 上部署 RDS 数据库**,涵盖 IaC 最佳实践和 Gruntwork RDS 模块的选型对比 - 问题域:RDS 部署方式的选择(控制台 vs 代码)、模块选型(grunt work 模块 vs SRE 核心模块)、Day 2 运维(扩缩容/补丁/升级) - 方法/机制:使用 Terragrunt(Terraform 封装器)管理 RDS 部署,通过 GitHub PR + Atlantis 实现变更自动化;CloudWatch 负责监控告警 - 结论/价值:IaC 部署任何规模的 RDS 到 AWS 均优于控制台;grunt work RDS Service 相比裸模块提供更完整的企业级功能(KMS 加密、CloudWatch 告警等);代码即文档 ## Key Claims(用中文描述) - **IaC 六大大好处**:速度、灵活性、一致性、灾难恢复、文档、自动化。代码即文档 - **两种 RDS 部署选项**:裸模块 RDS module(基础功能)vs 更完整的 grunt work RDS Service(推荐,预建 KMS 加密和 CloudWatch 告警) - **SRE 核心模块功能弱于 grunt work 服务**:建议生产环境使用 grunt work RDS Service - **Terragrunt 优于裸 Terraform**:避免变量重复声明,保持代码整洁,贯彻 DRY 原则 - **Day 2 运维通过 GitHub PR + Atlantis 实现**:扩缩容、补丁、大版本升级均在 Terragrunt 文件中修改,通过 PR 触发 Atlantis 自动应用 - **监控方案**:CloudWatch Dashboard + Alarms,注意突发性能实例(burstable instance)的 CPU credits 消耗 ## Key Quotes > "We use Terragrunt, which is basically it's a wrapper around Terraform, and it allows you to keep your code clean and you're not repeating your variables all the time." — Greg, DBRE Team > "The code is the documentation." — Greg, 强调 IaC 的文档价值 ## Key Concepts - [[Infrastructure-as-Code]]:通过代码定义和版本控制基础设施资源,核心优势包括速度、一致性、灾难恢复和自动化 - [[DRY Principle]]:Terragrunt 通过管理 provider 和 remote_state 块减少跨环境重复声明 - [[GitOps]]:通过 GitHub PR + Atlantis 实现基础设施变更的自动化审核和应用 - [[CloudWatch-Alarms]]:RDS 监控与告警机制,包含突发性能实例的 CPU credits 考虑 - [[KMS-Encryption]]:grunt work RDS Service 内置的 KMS 密钥加密功能 ## Key Entities - [[Gruntwork]]:提供预建 Terraform 模块(RDS Service 等),建议生产环境使用其 grunt work RDS Service 而非裸模块 - [[Atlantis]]:Git 驱动的 Terraform 自动化工具,配合 GitHub PR 实现 IaC 变更 - [[Terraform]]:云厂商无关的 IaC 核心工具 - [[Terragrunt]]:Terraform 的 DRY 封装层,用于管理 RDS 部署配置 - [[DBRE]]:Database Reliability Engineering 团队,Greg 来自该团队 - [[CloudWatch]]:AWS 监控服务,用于 RDS Dashboard 和 Alarms ## Connections - [[learning-sessions-cloud-transformation-programme-20230808-183322-meeting-recordi]] ← related ← [[learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform]](同一 CTP 系列,ECS 部署 + RDS 部署) - [[ctp-topic-48-terraform-vs-terragrunt]] ← related ← [[learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform]](Terragrunt 在两个主题中均有讨论) - [[ctp-topic-16-cross-account-terraform-modules]] ← related ← [[learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform]](IaC 模块化 + Cross-account Terraform) - [[ctp-topic-9-ci-cd-with-gruntwork]] ← foundation ← [[learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform]](Gruntwork CI/CD 基础) - [[Terraform]] ← wraps ← [[Terragrunt]] - [[Gruntwork]] ← provides ← [[RDS-Module]](grunt work RDS Service) - [[Atlantis]] ← automates ← [[Terraform]] - [[CloudWatch]] ← monitors ← [[RDS-Module]] ## Contradictions - 与 [[ctp-topic-9-ci-cd-with-gruntwork]](Gruntwork CI/CD):两者均依赖 Gruntwork 模块体系;本主题聚焦 RDS 部署,CI/CD 主题聚焦 ECS 应用部署;RDS 部署同样适用 Gruntwork 流水线规范,两者互补而非冲突 - 与 [[ctp-topic-48-terraform-vs-terragrunt]](Terraform vs Terragrunt):本主题的实际案例印证了该主题的观点——Terragrunt 保持代码整洁、避免变量重复;两主题一致,共同推荐 Terragrunt 作为 Terraform 的封装层 - 与 [[ctp-topic-16-cross-account-terraform-modules]](跨账号 Terraform 模块):两者均讨论 Terraform 模块的运维方式;跨账号模块方案(Jenkins + ECS Deploy Runner)与本主题(RDS 通过 Atlantis)的 CI/CD 载体不同,适用于不同规模和架构场景,无直接冲突