--- title: "CTP Topic 48 Terraform vs Terragrunt" type: source tags: [Terraform, Terragrunt, IaC, CTP] date: 2026-04-14 --- ## Source File - [[raw/Cloud & DevOps/Public-Cloud-Learning-Sessions/03_Terraform/ctp-topic-48-terraform-vs-terragrunt.md]] ## Summary - 核心主题:Terraform 与 Terragrunt 的对比与选型 - 问题域:基础设施即代码(IaC)工具选择,企业级多环境部署管理 - 方法/机制:Terraform 提供声明式配置和状态管理,Terragrunt 作为包装器实现 DRY 原则和变量复用 - 结论/价值:Terraform 适合单一环境,Terragrunt 适合多环境企业级部署 ## Key Claims - Terraform 是云无关的基础设施即代码工具,通过状态文件将期望状态与实际环境关联 - Terragrunt 是 Terraform 的轻量级包装器,遵循 DRY 原则实现配置复用 - Terragrunt 可以重复使用信息而无需硬编码值,管理 provider 和 remote state 块 - Terraform Enterprise 是包含工作区的 CI 平台 - Gruntwork 提供预构建可定制模块和 Terraform 原生 AWS Landing Zone ## Key Quotes > "Terraform 是 Golang 应用程序,用于跨各种环境配置、变更和版本控制资源" > "Terragrunt 提供一种可重复使用信息而不硬编码值的方式" ## Key Concepts - [[Terraform]]:基础设施即代码工具,通过声明式配置定义云资源 - [[Terragrunt]]:Terraform 的包装工具,提供模块化和变量共享 - [[Infrastructure as Code (IaC)]]:通过代码实现基础设施管理的一致性和版本控制 - [[State File]]:Terraform 用于将期望状态关联到实际环境的文件 ## Key Entities - [[HashiCorp]]:Terraform 的开发商 - [[Gruntwork]]:提供预构建 Terraform 模块和 Landing Zone - [[Atlantis]]:集成 Terraform 与 GitHub 的开源 CI/CD 工具 ## Connections - [[Terraform]] ← wraps ← [[Terragrunt]] - [[Terragrunt]] ← uses ← [[Infrastructure as Code (IaC)]] - [[Gruntwork Landing Zone]] ← built_with ← [[Terraform]] ## Contradictions - 无 --- ## 相关资源 - NAS: /volume2/work/Public Cloud Learning Sessions/CTP _ Topic 48_ Terraform vs Terragrunt.mp4