62 lines
4.7 KiB
Markdown
62 lines
4.7 KiB
Markdown
---
|
||
title: "Learning Sessions Cloud Transformation Programme-Deploying RDS via Terraform"
|
||
type: source
|
||
tags:
|
||
- Terraform
|
||
- RDS
|
||
- IaC
|
||
- Cloud-Transformation-Programme
|
||
- DBRE
|
||
date: 2026-04-14
|
||
---
|
||
|
||
## Source File
|
||
- [[Cloud & DevOps/Public-Cloud-Learning-Sessions/03_Terraform/learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform]]
|
||
|
||
## Summary(用中文描述)
|
||
- 核心主题:通过 Terraform 在 AWS 上自动化部署 RDS 数据库,DBRE 团队的 Greg 主讲
|
||
- 问题域:IaC 部署 RDS 的模块选型、Day 2 运维操作、监控告警配置
|
||
- 方法/机制:推荐使用 Gruntwork 的 RDS Service 模块(含 KMS 加密、CloudWatch 告警),配合 Terragrunt 管理多环境配置;Day 2 操作通过 GitHub PR + Atlantis 审批后自动 apply
|
||
- 结论/价值:任何规模的 RDS 部署都应使用 Terraform 而非 Console,IaC 的核心价值在于"代码即文档"
|
||
|
||
## Key Claims(用中文描述)
|
||
- **Greg(DBRE 团队)× IaC 选型**:提倡所有规模的 RDS 部署都使用 Terraform,Console 方式不可取
|
||
- **IaC 六大核心价值**:速度、灵活性、一致性、灾难恢复、文档化、自动化;"代码即文档"是最核心的文档化原则
|
||
- **RDS 模块二选一**:grunt work RDS Service(推荐,功能完整)vs SRE Core Modules(功能较少);grunt work 预置 KMS 加密 + CloudWatch 告警,SRE 模块无此能力
|
||
- **Terragrunt 实践**:使用 tagged release(不用 master)确保稳定性,避免变量重复声明,代码保持 DRY
|
||
- **Day 2 运维流程**:变更在 Terragrunt 文件中完成 → GitHub Pull Request → Atlantis 审批 → 自动 apply;支持扩缩容、打补丁、主版本升级
|
||
- **监控策略**:CloudWatch Dashboard + 告警;burstable 实例需关注 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, DBRE Team(IaC 核心哲学)
|
||
|
||
## Key Concepts
|
||
- [[Infrastructure-as-Code]]:IaC 是本次分享的主题,Terraform 是核心工具,覆盖速度/灵活性/一致性/灾难恢复/文档化/自动化六大价值
|
||
- [[InfrastructureAsCode]]:页面已有,本次来源提供 IaC 选型 RDS 的具体实践补充
|
||
- [[DRY-Principle]]:Terragrunt 践行 DRY 原则,避免变量在多环境间重复声明
|
||
- [[Terraform-State]]:Terraform 通过状态文件将期望状态绑定到实际环境(本来源提及但未展开)
|
||
|
||
## Key Entities
|
||
- [[Greg]]:DBRE 团队成员,本次 Learning Session 的讲师,主讲 Terraform 部署 RDS
|
||
- [[Amazon-RDS]]:本次分享的核心资源,Greg 主张所有规模都用 Terraform 部署
|
||
- [[Gruntwork]]:提供 RDS Service 模块和 SRE Core Modules,是本次分享的模块选型依据
|
||
- [[Terragrunt]]:推荐的 Terraform 封装工具,使用 tagged release 管理多环境
|
||
- [[AWS]]:RDS 所在的云平台,监控使用 CloudWatch
|
||
- [[Atlantis]]:GitOps 工具,配合 GitHub PR 实现 RDS 变更的自动化审批和 apply
|
||
|
||
## Connections
|
||
- [[ctp-topic-48-terraform-vs-terragrunt]] ← related_to ← [[learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform]](两者均讨论 Terragrunt 选型,本来源侧重 RDS 场景下的实践)
|
||
- [[ctp-topic-3-deploy-and-maintain-infrastructure]] ← depends_on ← [[learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform]](基础设施部署与维护是本来源的上下文)
|
||
- [[ctp-topic-32-using-atlantis-cicd-for-infrastructure-deployments]] ← extends ← [[learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform]](Day 2 运维中 GitHub PR + Atlantis 自动 apply 与该来源的 Atlantis 配置细节互补)
|
||
- [[ctp-topic-9-ci-cd-with-gruntwork]] ← related_to ← [[learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform]](两者均涉及 Gruntwork 模块体系)
|
||
- [[learning-sessions-cloud-transformation-programme-20230808-183322-meeting-recordi]] ← extends ← [[learning-sessions-cloud-transformation-programme-deploying-rds-via-terraform]](ECS 部署和 RDS 部署共同构成 CTP 的 IaC 全景)
|
||
|
||
## Contradictions
|
||
- 与 [[ctp-topic-48-terraform-vs-terragrunt]] 的潜在冲突:
|
||
- 冲突点:Terraform vs Terragrunt 的定位
|
||
- 当前观点(来源):Terragrunt 是 RDS 部署的首选工具,"keep your code clean, not repeating variables"
|
||
- 对方观点:CTP Topic 48 对 Terraform 和 Terragrunt 的适用场景做了更细致的对比,指出 Terragrunt 是"轻量封装"而非必须选择
|
||
- 实际情况:两者不矛盾,本来源是 Terragrunt 的正面用例,Topic 48 提供的是通用对比框架
|