尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Atlantis 与 Terraform Cloud/Enterprise 集成指南:远程后端、Token 认证与本地执行模式

发布时间:2026/9/25 3:11:17

资讯中心
01
ARTICLE

Atlantis 与 Terraform Cloud/Enterprise 集成指南:远程后端、Token 认证与本地执行模式

Atlantis 与 Terraform Cloud/Enterprise 集成指南:远程后端、Token 认证与本地执行模式
DevOpsCI/CD基础设施【免费下载链接】atlantisTerraform Pull Request Automation项目地址https://gitcode.com/gh_mirrors/at/atlantis点击查看免费下载本指南聚焦于在 AtlantisTerraform Pull Request Automation中接入 Terraform Cloud / Terraform Enterprise 的完整方案。文章围绕官方文档 runatlantis.io/es/docs/terraform-cloud.md西班牙语版本与 runatlantis.io/docs/terraform-cloud.md英文原版展开覆盖免费远程状态存储Free Remote State Storage与远程操作Remote Operations两种场景并深入到仓库源码层验证~/.terraformrc生成、Token 校验与日志流处理等实现细节。读完本文你将能够完成 Terraform Cloud 的 state 迁移、生成并安全传递 Team/User Token、按需配置--tfe-hostname与--tfe-local-execution-mode并理解 Atlantis 底层是如何调用 Terraform 远程后端的。背景Terraform Cloud 与 Terraform Enterprise 的命名演变在深入配置之前需要先澄清一个命名问题。Terraform Enterprise 曾被更名为 Terraform Cloud即远程状态管理服务对应app.terraform.io而 Private Terraform Enterprise 则更名为 Terraform Enterprise即私有化部署版本。因此Terraform Cloud指托管在app.terraform.io上的 SaaS 服务既包含免费远程状态存储也包含提供远程操作、Sentinel 策略等能力的付费层级Paid TiersTerraform Enterprise指自建私有的企业版安装。Atlantis 对两者提供“无缝”集成无论你使用的是哪种形态工作流都保持一致。仓库中的测试用例例如 plan_step_runner_test.go 与 apply_step_runner_internal_test.go中使用的远程 Run URL 均为https://app.terraform.io/app/...形式印证了 Terraform Cloud 是默认的集成目标。两种集成场景免费远程状态存储 vs 远程操作Atlantis 与 Terraform Cloud/Enterprise 的集成存在两种截然不同的模式按需选择场景一使用免费远程状态存储Free Remote State Storage这是最轻量的集成方式仅将 state 存储迁往 Terraform Cloud所有terraform命令仍然在 Atlantis 所在环境本地执行。步骤如下将你的 state 迁移到 Terraform Cloud官方提供「Migrating State from Local Terraform」迁移指引更新所有引用该 state 的项目使其指向新的存储位置即启用remotebackend 配置生成一个 Terraform Cloud/Enterprise Token将 Token 传递给 Atlantis。完成以上四步后Atlantis 会如常运行plan/apply唯一的变化是 state 被存储在 Terraform Cloud 中而不再保存在本地或原有后端。场景二使用 Terraform Cloud 远程操作或 Terraform EnterpriseAtlantis 通过 Terraform 官方的 remote backend 与完整版 Terraform Cloud / Terraform Enterprise 集成。此模式下Atlantis 依旧照常发起terraform命令但这些命令实际上远程执行在 Terraform Cloud 或 Terraform Enterprise 中。为什么选择远程操作模式远程操作模式为团队带来的核心能力包括实时流式输出Real-time streaming output远程执行的日志通过 API 实时回传取消进行中的命令可以在 Terraform Cloud 控制台终止正在运行的 plan/applySecret 变量敏感变量以加密方式托管在云端不出现在仓库与 CI 日志中Sentinel 策略在 apply 之前强制执行基于策略的检查。这些能力无需改变你现有的 Pull Request 工作流——PR 驱动的atlantis plan/atlantis apply交互方式保持不变。该场景的启动步骤与场景一相同迁移 state → 更新引用 → 生成 Token → 传递 Token区别在于 backend 配置为 remote 后命令在云端执行而非本地。生成 Terraform Cloud/Enterprise TokenAtlantis 需要一个 Terraform Cloud/Enterprise Token 来访问 API。官方文档明确推荐使用 Team Token但 User Token 同样可用。Team Token 的生成步骤点击顶部导航栏的Settings在侧边栏中选择Teams选择已有团队或创建新团队启用Manage Workspaces权限向下滚动到Team API Token区域生成 Token。User Token 的生成步骤点击你的头像进入User Settings在侧边栏选择Tokens确保该用户所属团队已启用Manage Workspaces权限。无论选择哪种 TokenManage Workspaces权限都必不可少——Atlantis 需要通过该权限读写 Workspace 的 state 与执行远程操作。将 Token 传递给 Atlantis方式一环境变量推荐通过环境变量ATLANTIS_TFE_TOKEN传递 Tokenexport ATLANTIS_TFE_TOKENxxx.atlasv1.yyy atlantis server方式二命令行 flag不推荐也可以使用--tfe-tokenflagatlantis server --tfe-tokenxxx.atlasv1.yyy但官方明确警告使用 flag 时 Token 会在进程列表中直接可见存在泄露风险。这一点与cmd/server.go中对--tfe-token的 flag 描述一致——cmd/server.go 注明「Should be specified via the ATLANTIS_TFE_TOKEN environment variable for security」。私有 Terraform Enterprise设置 hostname如果你自建 Terraform Enterprise 安装还需要通过--tfe-hostnameflag或环境变量ATLANTIS_TFE_HOSTNAME指定主机名atlantis server --tfe-hostnamemy-terraform-enterprise.company.com如果不设置该参数默认值为app.terraform.io即 Terraform Cloud SaaS 服务。配置项定义可参见 server/user_config.go。需要特别注意的是--tfe-hostname与--tfe-token的耦合约束仓库源码 cmd/server.go 中实现了严格的校验逻辑——设置了--tfe-hostname但未设置--tfe-token时Atlantis 启动会直接报错if setting --tfe-hostname, must set --tfe-token。对应的测试用例 cmd/server_test.go 覆盖了这一场景。三个关键 flag 的完整参数说明以下三个参数是 Atlantis 接入 Terraform Cloud/Enterprise 的核心配置均自 v0.8.3 起可用详细说明见 runatlantis.io/docs/server-configuration.mdFlag环境变量默认值说明--tfe-tokenATLANTIS_TFE_TOKEN无Terraform Cloud/Enterprise 的 API Token用于生成~/.terraformrc文件仅在将 TFC/E 用作远程 backend 时设置出于安全考虑应通过环境变量指定--tfe-hostnameATLANTIS_TFE_HOSTNAMEapp.terraform.io自建 Terraform Enterprise 的 hostname若使用 Terraform Cloud 则无需设置--tfe-local-execution-modeATLANTIS_TFE_LOCAL_EXECUTION_MODEfalse当 Workspace 使用本地执行模式而非 TFC/E 远程执行模式时启用本地执行模式的日志警告--tfe-local-execution-mode是一个容易被忽略但至关重要的开关如果你在 Workspaces 中使用本地执行模式务必设置--tfe-local-execution-mode否则你将在 Atlantis 中看不到任何日志。背后的实现逻辑可以在 server/server.go 中找到当TFEToken非空且未启用TFELocalExecutionMode时Atlantis 会判定「TFE 已启用且使用远程执行模式日志流式传输没有必要」从而使用jobs.NoopProjectOutputHandler{}空实现替代默认的日志处理器。也就是说远程执行模式默认命令日志由 Terraform Cloud 侧产生Atlantis 不做本地流式输出本地执行模式必须显式开启--tfe-local-execution-modeAtlantis 才会继续以本地方式采集并展示日志。内置步骤限制仅支持 plan 与 apply集成存在一条明确的边界约束Terraform Cloud/Enterprise 集成仅对内置的plan和apply步骤生效不适用于自定义run步骤即那些替换了 plan 或 apply 的 run 步骤。这意味着如果你在 repo 级 atlantis.yaml 中通过自定义 workflow 将plan/apply替换为自定义的run步骤那么远程后端认证与远程执行逻辑将不再生效。保持内置步骤、仅在需要额外操作时以自定义步骤作为补充是使用该集成的基本前提。底层原理Atlantis 如何生成~/.terraformrc文档中的一个重要提示揭示了内部机制Atlantis 会在底层生成一个~/.terraformrc文件将 Token 写入其中供 Terraform CLI 在访问远程 backend 时自动读取。该逻辑在源码中有完整实现。在 terraform_client.go 中初始化 Terraform 客户端时只要tfeToken非空就会获取 home 目录并调用generateRCFile(tfeToken, tfeHostname, home)生成配置文件。核心实现见 terraform_client.go目标文件固定为home/.terraformrc写入内容由模板rcFileContents生成terraform_client.gocredentials %s { token %q }即以 hostname 与 Token 为参数填充出如下内容credentials app.terraform.io { token xxxx }防覆盖保护如果~/.terraformrc已存在Atlantis 会先读取现有内容仅当现有内容与将要写入的内容完全一致时才跳过写入否则直接返回错误cant write TFE token to ... because that file has contents that would be overwritten而不会擅自覆盖用户的既有配置文件以0600权限写入确保 Token 的本地安全性。已有.terraformrc时的手动处理基于上述防覆盖逻辑官方给出明确建议如果 Atlantis 运行环境中已经存在~/.terraformrc文件则需要手动将 credentials 块合并到该文件中而不是依赖ATLANTIS_TFE_TOKEN环境变量因为 Atlantis 不会覆盖你的.terraformrc文件。credentials app.terraform.io { token xxxx }合并完成后再启动 AtlantisTerraform CLI 即可正常访问远程 backend。完整的落地配置清单综合以上内容给出两份可直接套用的启动配置场景 ATerraform CloudSaaSexport ATLANTIS_TFE_TOKENxxx.atlasv1.yyy atlantis server \ --atlantis-urlhttps://atlantis.example.com \ --gh-useryour-github-bot \ --gh-tokenyour-github-token无需设置--tfe-hostname默认即指向app.terraform.io若 Workspace 为本地执行模式追加--tfe-local-execution-mode。场景 B私有 Terraform Enterpriseexport ATLANTIS_TFE_TOKENxxx.atlasv1.yyy atlantis server \ --tfe-hostnamemy-terraform-enterprise.company.com必须同时提供--tfe-hostname与--tfe-token否则启动校验会报错见上文 cmd/server.go。小结Atlantis 与 Terraform Cloud/Enterprise 的集成以 remote backend 为桥梁Token 通过ATLANTIS_TFE_TOKEN注入由 Atlantis 在启动时生成~/.terraformrc完成 CLI 认证命令要么本地执行免费状态存储、本地执行模式要么远程执行于云端远程操作模式。配置时需注意三点推荐使用环境变量传递 Token、自建 TFE 必须设置 hostname、本地执行模式必须开启--tfe-local-execution-mode同时牢记内置plan/apply步骤的限制边界。对实现细节感兴趣的同学可进一步阅读 terraform_client.go、server/server.go 与 cmd/server.go 中的相关源码与测试。赞分享DevOpsCI/CD基础设施【免费下载链接】atlantisTerraform Pull Request Automation项目地址https://gitcode.com/gh_mirrors/at/atlantis点击查看免费下载相关推荐Atlantis 与 Terraform Cloud/Enterprise 集成指南远程状态与远程执行模式配置详解Atlantis 与 Terraform Cloud/Enterprise 集成指南远程状态与远程执行模式配置详解 导读 本文是 Terraform ClouDevOpsCI/CD基础设施突破本地限制Terraform远程执行与CI/CD流水线深度集成指南突破本地限制Terraform远程执行与CI/CD流水线深度集成指南 Terraform是一款流行的开源工具用于构建、变更和版本化云基础架构。它支持多种云提IaCCLI基础设施云原生DevOpsAtlantis 与本地执行 Terraform apply 的风险为什么你应该把 apply 交给远程系统Atlantis 与本地执行 Terraform apply 的风险为什么你应该把 apply 交给远程系统 如果你正在用 Terraform 管理多人的基础DevOpsCI/CD基础设施上一篇Git History版本控制最佳实践团队协作中的应用技巧下一篇3步无痛升级Thanos从v0.39到v0.40避坑指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。