跳到主要内容

HTTP 后端 Pro

Semaphore UI 的 Terraform HTTP 后端可在 Semaphore 内部直接安全地存储和管理 Terraform 状态文件。该功能在 Pro 版中提供,具有以下几项关键优势。

功能​

  • 安全的状态存储:状态文件安全地存储在 Semaphore 内部。
  • 状态锁定:防止对同一状态文件的并发修改。
  • 版本历史:跟踪基础设施状态随时间的变化。
  • UI 集成:直接通过 Semaphore 界面管理状态文件。

配置​

要开始使用内置 HTTP 后端,首先需要为 Terraform 任务模板(Task Template)创建一个工作区。

要添加工作区,请打开 Terraform/OpenTofu 模板的工作区(Workspaces)标签页。

创建工作区时,系统会提示您选择一个 SSH 密钥,用于克隆 Terraform 代码中使用的私有模块。如果不使用任何私有模块,直接选择 None 选项即可。

在任务中使用 HTTP 后端​

要使用内置 HTTP 后端存储 Terraform 任务的状态,您无需在 Terraform 代码中手动配置后端。Semaphore 可以在执行期间自动创建配置文件。要启用此功能,只需在任务模板设置中勾选覆盖后端设置(Override backend settings)选项,如下方截图所示。

您还可以选择指定执行期间动态创建的配置文件的名称。如果您的代码中已经包含后端配置文件,并且需要动态覆盖它以配合 Semaphore 的内置后端,这会很有用。

在 Semaphore 之外使用 HTTP 后端​

内置 HTTP 后端不仅可以在 Semaphore 内运行任务时使用,也可以在 Semaphore 之外执行 Terraform 代码时使用,例如从本地终端执行。

为此,Semaphore 允许您为状态存储创建别名(唯一的 HTTP 端点)。通过这些别名,可以方便地从外部环境引用状态文件。

要进行设置,请打开工作区标签页,选择所需的工作区并添加别名。您还需要选择一个包含用户名和密码的密钥,用于对后端访问进行身份验证。

之后,您需要将后端设置添加到 Terraform 代码中:

terraform {
backend "http" {
address = "http://localhost:3000/api/terraform/***"
username = "***"
password = "***"
}
}

现在,即使从终端运行,Terraform 也会使用 Semaphore 的内置 HTTP 后端:

terraform apply