在创建其余基础架构之前,如何使用Terraform设置远程后端存储桶? (GCP)

时间:2019-10-03 06:45:54

标签: google-cloud-platform terraform gitlab-ci gitlab-ci-runner terraform-provider-gcp

我该如何首先使用Gitlab的管道在GCP上初始化Terraform的后端状态存储桶,然后然后其余的基础架构初始化?我发现this,但不确定Gitlab的管道意味着什么。

2 个答案:

答案 0 :(得分:0)

这始终是一个难题。我的帖子不会直接回答您的问题,但是会提供我对该主题的看法。 (太久不能发表评论了)

有点像要求使用相同的CI工具来管理拥有CI工具的服务器(例如:gitlab服务器自行管理)。

如果使用gitlab CI创建存储库,则将无法保留状态,因为对于此特定任务您将没有远程状态来存储它。这意味着您将拥有一个带有tf但没有状态的不一致资源。

如果要将其与CI集成,我建议在ci内使用gcloud cli,检查gcs是否存在以及是否不创建它。

如果您真的想使用terraform,也许只对特定资源使用带远程后端的terraform云免费层。像这样,您拥有由tf管理的所有资源,并且所有资源都带有tfstate。

答案 1 :(得分:0)

您现在可以使用另一个GitLab 13.0 (May 2020)

选项,该选项不涉及GCP。

GitLab HTTP Terraform状态后端

Terraform的用户知道设置状态文件(配置到实际资源的映射,还可以跟踪其他元数据)的痛苦。
该过程包括启动一个新的Terraform项目,以及设置一个第三方后端来存储状态文件,该状态文件可靠,安全且位于git repo之外。

许多用户希望以一种更简单的方式来设置其状态文件存储,而不涉及其他服务或设置。

从GitLab 13.0开始,GitLab可用作Terraform的HTTP后端,从而无需为每个新项目分别设置状态存储。

https://about.gitlab.com/images/13_0/terraform-gitlab-backend.png

GitLab HTTP Terraform状态后端允许以最少的配置获得无缝的体验,并且能够将状态文件存储在GitLab实例控制的位置。
可以使用Terraform的HTTP后端,利用GitLab进行身份验证来访问它们。
用户可以轻松迁移到GitLab HTTP Terraform后端,同时还可以从其本地终端访问它。

GitLab HTTP Terraform状态后端支持:

  • 每个项目有多个命名状态文件
  • 锁定
  • 对象存储
  • 静态加密

它可用于GitLab自助管理安装和GitLab.com上。

请参见documentationissue


此外,GitLab 13.4(在2020年9月)将在可预见的未来中为该提供程序提供支持:

拥有GitLab Terraform提供程序的所有权

我们最近received maintainer rights to the GitLab Terraform provider并计划enhance it in upcoming releases
在过去的一个月中,我们合并了21个请求请求并关闭了31个问题,其中包括一些长期未解决的错误和缺少的功能,例如supporting instance clusters

您可以read more about the GitLab Terraform provider在Terraform文档中。

https://about.gitlab.com/images/13_4/gitlab-terraform-tiny.png -- Taking ownership of the GitLab Terraform provider

请参见DocumentationIssue