Terragrunt
Terragrunt 是 Terraform 和 OpenTofu 的封装工具,可以让配置保持 DRY,并管理模块之间的依赖关系。Semaphore 运行它的方式与 Terraform/OpenTofu 相同,只有本文所述的少数差异。
前置条件
- 在 Semaphore 服务器或执行任务的运行器(Runner)上安装
terragrunt二进制文件以及terraform或tofu二进制文件。 - 启用 Terragrunt Code 应用(App):它默认处于禁用状态。从账户菜单打开 Applications,并打开对应开关,参见应用。
创建 Terragrunt 模板
- 进入任务模板(Task Templates),点击 New Template。
- 选择 Terragrunt Code 作为应用。
- 设置仓库(Repository)以及包含
terragrunt.hcl的子目录。 - 在清单(Inventory)字段中选择或创建一个工作区(Workspace)。Terragrunt 模板使用类型为
terragrunt-workspace的清单,参见工作区。 - 点击 Create,然后点击 Run。

运行任务
新建任务(Task)对话框提供与 Terraform 相同的选项:Plan、Destroy、Auto Approve、Upgrade 和 Reconfigure。
Semaphore 调用 terragrunt run -- <terraform arguments>,并通过 --tf-path 传入 Terraform 或 OpenTofu 二进制文件,除非你已在模板的 CLI 参数中设置了 --tf-path。工作区的选择通过 terragrunt run -- workspace select -or-create=true <name> 完成。
所选变量组(Variable Groups)中的变量会作为环境变量传递,因此输入变量请使用 TF_VAR_ 前缀。额外变量和调查变量会以 -var name=value 参数的形式传递。
说明
terragrunt会在每条命令之前自动运行init。- HTTP 状态后端以及 Workspaces 选项卡上的状态列表与 Terraform 的工作方式相同,参见 HTTP 后端。
- 若要跨多个模块使用
run-all,请在模板的 CLI args 中添加相应参数。