Files
nexus/wiki/sources/ctp-topic-16-cross-account-terraform-modules.md

4.9 KiB
Raw Blame History

title, type, tags, date
title type tags date
CTP Topic 16 Cross-account Terraform modules source
Terraform
Cross-Account
Modules
CTP
IaC
DevOps
AWS-Landing-Zone
2026-04-14

Source File

Summary用中文描述

  • 核心主题:跨账号 Terraform 模块的中心化部署方案,解决多账号 AWS 环境中一个模块内跨账号创建资源的安全与自动化问题
  • 问题域:原有的 Gruntwork 流水线针对单账号设计,在多账号场景下存在安全风险(一账号被攻破可能波及全局)
  • 方法/机制:基于 Shared Account共享账号 的中心化部署架构Jenkins + ECS Deploy Runner + Assume Role 三者联动
  • 结论/价值实现安全性账号间无直接信任关系、自动化Jenkins 自动识别跨账号模块)、可复用性(模块代码不硬编码特定账号角色)

Key Claims用中文描述

  • Shared Account 作为中转站Jenkins 托管在 Shared Account当检测到 cross-account.json 标记文件时触发 ECS Deploy Runner
  • Assume Role 双角色机制ECS Deploy Runner 通过 Assume Role 访问目标账号的两个角色——TF state bucket accessor(读取状态文件)和 cross-account ECS deploy runner role(执行资源部署)
  • Blast Radius 控制:避免 Workload 账号之间直接互访,权限控制在受严格审计的 Shared Account
  • Terragrunt HCL 全局配置:通过根目录 terragrunt.hcl 定义远程状态存储和角色切换逻辑,支持本地开发与 Jenkins 自动部署的差异化角色处理

Key Quotes

"Cross-account Terraform Modules 指在一个模块内通过配置多个 Provider实现在多个 AWS 账号中同时创建或管理资源的功能" — Fibos核心概念定义 "Shared Account 是整个 Landing Zone 的核心管理账号,托管 Jenkins、镜像仓库等公共服务并作为跨账号部署的信任源" — Fibos架构定位 "ECS Deploy Runner 运行在 ECS 上的 Docker 容器,负责执行 Terraform plan 和 apply 命令,是流水线中的实际执行单元" — FibosEDR 定义

Key Concepts

  • Cross-account Terraform Modules:在一个 Terraform 模块中通过配置多个 Provider实现在多个 AWS 账号中同时创建或管理资源的功能
  • Shared AccountLanding Zone 核心管理账号,托管 Jenkins 及公共服务,作为跨账号部署的信任源
  • ECS Deploy Runner:运行在 ECS 上的 Docker 容器,负责执行 Terraform plan/apply是流水线的实际执行单元
  • TF State Bucket Accessor:专门定义的 IAM 角色,仅允许部署工具访问目标账号 S3 桶中的 Terraform 状态文件
  • Cross-account ECS Deploy Runner Role:部署在目标账号中的角色,允许 Shared Account 的执行器通过 Assume Role 获取资源创建权限
  • cross-account.json:约定俗成的标记文件,放置于模块目录中,用于告知 Jenkins 该模块需要调用跨账号部署逻辑
  • Root Terragrunt HCL:全局 Terragrunt 配置文件,定义远程状态存储和角色切换逻辑

Key Entities

  • Fibos:主讲人,分享了团队基于 Shared Account 的跨账号 Terraform 部署方案
  • Gruntwork:参考架构来源,原有 Gruntwork 流水线主要针对单账号设计
  • JenkinsCI/CD 引擎,托管在 Shared Account负责检测模块类型并触发部署流程
  • AWS Landing Zone多账号架构框架Shared Account + Workload Account 的分层设计

Connections

Contradictions

  • ctp-topic-9-ci-cd-with-gruntwork(单账号 Gruntwork 流水线):原有 Gruntwork 流水线主要针对单账号设计,不处理跨账号场景;本方案通过 Shared Account 中心化架构扩展支持多账号,同时保留 Gruntwork 模块复用优势。两者为演进关系而非冲突。
  • ctp-topic-32-using-atlantis-cicd-for-infrastructure-deploymentsAtlantis 替代 JenkinsAtlantis 在 merge 前应用变更,每个 Landing Zone 部署单台 EC2 实例;本方案的 ECS Deploy Runner 运行在容器中更适合跨账号大规模部署。Atlantis 的跨账号访问通过各账户 IAM 角色实现,与本方案 Assume Role 机制类似,但执行载体不同。