在同一个共享入口执行 Terraform 变更

将 Terraform 代码连接到 Semaphore。选择工作区、审查计划输出、执行 Apply,并让团队随时查看执行历史。

变更已审查,执行能否重复?

代码在 Git 中,但工作区、变量和凭据可能因终端会话而异。下一位工程师需要相同的起点。

为每项基础设施操作保存执行配置

  • 保存配置目录与工作区
  • 通过可重用的变量组提供变量
  • 将 Plan 和 Apply 作为独立记录的任务审查

将 Terraform 操作融入团队流程

审查拟议的基础设施变更

启动仅执行 Plan 的任务并共享输出。团队准备好变更时,再单独执行 Apply。

共享预先准备的作业

重新检查基础设施漂移

为仅执行 Plan 的模板设置计划,将配置与基础设施进行比较,并保留每次计划的输出。查看计划中的差异。

设置计划

配置 Terraform 并启动仅执行 Plan 的运行

从基础设施准备继续到服务配置

Terraform 步骤成功后会自动发布基础设施输出。将这些值映射到 Ansible 任务的输入,再使用 Python 验证已配置的服务。Workflows 将任务、数据以及成功或失败路径连接起来。

应用环境发布工作流
配置基础设施
成功时输出 → 输入
配置服务
成功时输出 → 输入
验证部署
失败时
收集诊断信息

Terraform 作业的工作区、输入与状态

将制定计划与应用变更分开

选择 Plan,查看拟议变更而不执行应用。Apply 是独立的一次执行,后续 Apply 不会自动使用先前 Plan 任务保存的输出。

选择工作区与输入

通过模板的 Inventory 字段选择 Terraform 工作区。使用带 TF_VAR_ 名称的变量组提供输入。选择工作区不会自动切换变量或凭据。

保留现有后端,或使用 Semaphore 后端

继续使用 Terraform 代码中的后端。Pro 可将其覆盖为 Semaphore 的 HTTP 后端,提供锁定、状态版本和 UI 管理。

准备一致的 Terraform 运行时

Semaphore 在执行之前运行 init。请在执行作业的服务器或运行器上准备 Terraform 版本、提供程序、私有模块凭据和 API 访问。

FAQ

能在 Semaphore 中运行现有 Terraform 配置吗?

可以。创建指向仓库与配置目录的 Terraform 任务模板。选择工作区,通过变量组提供输入,并准备所需 Terraform 运行时。Semaphore 执行配置,并保留任务输出和执行状态。

必须将 Terraform 状态迁移到 Semaphore 中吗?

不需要。Terraform 可以继续使用代码中配置的后端。在 Pro 中,可以选择 Semaphore HTTP 后端,提供状态锁定、版本历史和 UI 管理。请选择符合现有访问和恢复流程的后端。

选择 Terraform 工作区时也会更改变量与凭据吗?

不会。选择工作区只会选择状态工作区,作业所需的变量和凭据应单独配置。对于输入不同的环境,请有意识地组合任务模板与变量组,并在模板名称中明确预期范围。

Apply 会使用先前任务中的计划吗?

后续 Apply 不会自动使用先前 Plan 任务保存的输出,两者是独立执行。使用 Plan 审查拟议变更,再选择所需的 Apply 操作。任务历史会保留每次运行的输出和结果。

定期运行 Terraform 计划能帮助审查漂移吗?

可以。为仅执行 Plan 的模板设置计划,查看输出中的配置与基础设施差异。每次运行都有记录。它提供的是供定期审查的计划,并不会自动对计划中发现的每项漂移发出告警。

能在 Terraform 配置基础设施之后运行 Ansible 配置吗?

可以。在工作流中将 Terraform 任务模板放在 Ansible 模板之前,再添加 Python 就绪检查等验证步骤。配置各步骤的启动条件。Terraform 计划和状态与工作流协调仍分别管理。

如何提供 Terraform 变量与凭据?

将变量组关联到模板。Terraform 输入变量使用 TF_VAR_ 名称,认证则使用提供程序所要求的环境变量。将敏感值保存在密钥条目中,并在执行环境中准备模块和后端访问。

这与 Semaphore Terraform 提供程序相同吗?

不是。这项集成将基础设施 Terraform 配置作为 Semaphore 任务执行。Semaphore Terraform 提供程序则反向工作,通过 Terraform 管理受支持的 Semaphore 资源。两种方式可以独立使用,也可以在配置中结合使用。