使用 OpenTofu 和极狐GitLab 实践基础设施即代码
- Tier: 基础版,专业版,旗舰版
- Offering: JihuLab.com,私有化部署
要使用极狐GitLab 管理基础设施,您可以使用与 OpenTofu 的集成来定义可以版本化、重用和共享的资源:
- 管理低级组件,如计算、存储和网络资源。
- 管理高级组件,如 DNS 条目和 SaaS 功能。
- 使用极狐GitLab 作为 OpenTofu 状态存储。
- 存储和使用 OpenTofu 模块以简化常见和复杂的基础设施模式。
- 合并 GitOps 部署和基础设施即代码(IaC)工作流程。
以下示例主要使用 OpenTofu,但也可以与 Terraform 一起使用。
Terraform 和 OpenTofu 支持
极狐GitLab 与 Terraform 和 OpenTofu 集成。大多数功能都完全兼容,包括:
为了简单起见,极狐GitLab 文档主要提到 OpenTofu。然而,Terraform 和 OpenTofu 集成之间的差异已记录。
在流水线中快速启动 OpenTofu 项目
OpenTofu 可以与所有特定于 Terraform 的极狐GitLab 功能集成,使用极狐GitLab OpenTofu CI/CD 组件。
您可以通过包含组件在流水线中添加 验证、计划 和 应用 工作流程:
yaml1include: 2 - component: gitlab.com/components/opentofu/validate-plan-apply@<VERSION> 3 inputs: 4 version: <VERSION> 5 opentofu_version: <OPENTOFU_VERSION> 6 root_dir: terraform/ 7 state_name: production 8 9stages: [validate, build, deploy]
在流水线中快速启动 Terraform 项目
Terraform CI/CD 模板已弃用,并将在极狐GitLab 18.0 中移除。
极狐GitLab 和 Terraform 的集成通过极狐GitLab CI/CD 进行。使用 include 属性将 Terraform 模板添加到您的项目中,并从那里进行自定义。
要开始,请选择最适合您需求的模板:
所有模板:
- 使用 极狐GitLab 管理的 Terraform 状态 作为 Terraform 状态存储后端。
- 触发四个流水线阶段:测试、验证、构建 和 部署。
- 运行 Terraform 命令:测试、验证、计划 和 计划-json。它还仅在默认分支上运行 应用。
- 使用IaC 扫描检查安全问题。
最新 Terraform 模板(已弃用)
最新模板与最新版本的极狐GitLab 兼容。它提供了最新的极狐GitLab 功能,但可能会包含破坏性更改。
您可以安全地使用最新的 Terraform 模板:
- 如果您使用 JihuLab.com。
- 如果您使用每个新的极狐GitLab 版本更新的极狐GitLab 私有化部署实例。
稳定和高级 Terraform 模板(已弃用)
如果您使用较早版本的极狐GitLab,可能会遇到极狐GitLab 版本与模板版本之间的兼容性错误。在这种情况下,您可以选择使用这些模板之一:
在每次极狐GitLab 的主要版本发布(例如,15.0)中,最新模板替换旧模板。此过程可能会引入破坏性更改。如果需要,您可以使用旧版本的模板。
使用 Terraform 模板(已弃用)
要使用 Terraform 模板:
-
在左侧栏中,选择 搜索或转到,找到您想要与 Terraform 集成的项目。
-
选择 代码 > 仓库。
-
编辑您的 .gitlab-ci.yml 文件,使用 include 属性获取 Terraform 模板:
yaml1include: 2 # 要获取最新模板,请使用: 3 - template: Terraform.latest.gitlab-ci.yml 4 # 要获取高级最新模板,请使用: 5 - template: Terraform/Base.latest.gitlab-ci.yml 6 # 要获取稳定模板,请使用: 7 - template: Terraform.gitlab-ci.yml 8 # 要获取高级稳定模板,请使用: 9 - template: Terraform/Base.gitlab-ci.yml
-
按如下所述添加变量:
yamlvariables: TF_STATE_NAME: default # 如果您的 terraform 文件位于子目录中,请相应设置 TF_ROOT。例如: # TF_ROOT: terraform/production
-
可选。在您的 .gitlab-ci.yml 文件中覆盖模板中存在的属性,以自定义配置。
构建并托管您自己的 Terraform CI/CD 模板
尽管极狐GitLab 不再分发 Terraform CI/CD 模板和 terraform-images(包括 terraform 的底层作业镜像),但您仍然可以在极狐GitLab 的流水线中使用 Terraform。
相关主题
- 使用极狐GitLab 作为 Terraform/OpenTofu 模块仓库。
- 要在本地存储或远程存储中存储状态文件,请使用 极狐GitLab 管理的 Terraform/OpenTofu 状态。
- 要协作进行 Terraform 代码更改和 IaC 工作流程,请使用 合并请求中的 Terraform 集成。
- 解决极狐GitLab 和 Terraform 的问题。