使用 OpenTofu 和极狐GitLab 实践基础设施即代码

  • Tier: 基础版,专业版,旗舰版
  • Offering: JihuLab.com,私有化部署

要使用极狐GitLab 管理基础设施,您可以使用与 OpenTofu 的集成来定义可以版本化、重用和共享的资源:

  1. 管理低级组件,如计算、存储和网络资源。
  2. 管理高级组件,如 DNS 条目和 SaaS 功能。
  3. 使用极狐GitLab 作为 OpenTofu 状态存储。
  4. 存储和使用 OpenTofu 模块以简化常见和复杂的基础设施模式。
  5. 合并 GitOps 部署和基础设施即代码(IaC)工作流程。

以下示例主要使用 OpenTofu,但也可以与 Terraform 一起使用。

Terraform 和 OpenTofu 支持#

极狐GitLab 与 Terraform 和 OpenTofu 集成。大多数功能都完全兼容,包括:

  1. 极狐GitLab 管理的 Terraform/OpenTofu 状态
  2. 合并请求中的 Terraform/OpenTofu 集成
  3. Terraform/OpenTofu 模块仓库

为了简单起见,极狐GitLab 文档主要提到 OpenTofu。然而,Terraform 和 OpenTofu 集成之间的差异已记录。

在流水线中快速启动 OpenTofu 项目#

OpenTofu 可以与所有特定于 Terraform 的极狐GitLab 功能集成,使用极狐GitLab OpenTofu CI/CD 组件。

您可以通过包含组件在流水线中添加 验证计划应用 工作流程:

yaml
1include: 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 模板添加到您的项目中,并从那里进行自定义。

要开始,请选择最适合您需求的模板:

  1. 最新模板
  2. 稳定模板和高级模板

所有模板:

  1. 使用 极狐GitLab 管理的 Terraform 状态 作为 Terraform 状态存储后端。
  2. 触发四个流水线阶段:测试验证构建部署
  3. 运行 Terraform 命令:测试验证计划计划-json。它还仅在默认分支上运行 应用
  4. 使用IaC 扫描检查安全问题。

最新 Terraform 模板(已弃用)#

最新模板与最新版本的极狐GitLab 兼容。它提供了最新的极狐GitLab 功能,但可能会包含破坏性更改。

您可以安全地使用最新的 Terraform 模板:

  1. 如果您使用 JihuLab.com。
  2. 如果您使用每个新的极狐GitLab 版本更新的极狐GitLab 私有化部署实例。

稳定和高级 Terraform 模板(已弃用)#

如果您使用较早版本的极狐GitLab,可能会遇到极狐GitLab 版本与模板版本之间的兼容性错误。在这种情况下,您可以选择使用这些模板之一:

  1. 稳定模板,具有可供您构建的骨架。
  2. 高级模板,可以完全自定义设置。

在每次极狐GitLab 的主要版本发布(例如,15.0)中,最新模板替换旧模板。此过程可能会引入破坏性更改。如果需要,您可以使用旧版本的模板

使用 Terraform 模板(已弃用)#

要使用 Terraform 模板:

  1. 在左侧栏中,选择 搜索或转到,找到您想要与 Terraform 集成的项目。

  2. 选择 代码 > 仓库

  3. 编辑您的 .gitlab-ci.yml 文件,使用 include 属性获取 Terraform 模板:

    yaml
    1include: 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
  4. 按如下所述添加变量:

    yaml
    variables: TF_STATE_NAME: default # 如果您的 terraform 文件位于子目录中,请相应设置 TF_ROOT。例如: # TF_ROOT: terraform/production
  5. 可选。在您的 .gitlab-ci.yml 文件中覆盖模板中存在的属性,以自定义配置。

构建并托管您自己的 Terraform CI/CD 模板#

尽管极狐GitLab 不再分发 Terraform CI/CD 模板和 terraform-images(包括 terraform 的底层作业镜像),但您仍然可以在极狐GitLab 的流水线中使用 Terraform。

相关主题#

  1. 使用极狐GitLab 作为 Terraform/OpenTofu 模块仓库
  2. 要在本地存储或远程存储中存储状态文件,请使用 极狐GitLab 管理的 Terraform/OpenTofu 状态
  3. 要协作进行 Terraform 代码更改和 IaC 工作流程,请使用 合并请求中的 Terraform 集成
  4. 解决极狐GitLab 和 Terraform 的问题