Terraform backend

根据文档说明‘ 极狐GitLab 提供了一个 Terraform HTTP 后端来以最少的配置安全地存储您的状态文件’,那么请问下默认的后端是什么,对应的address,lock_address和unlock_address这些参数应该填什么

GitLab-managed Terraform state | GitLab 这里有示例,你可以参考下

这个好像是migrate的操作吧,难道默认的backend就是project吗

有一个 pipeline 的示例,可以将默认backend 设置成gitlab

terraform {
  backend "http" {
  }
}

只需要这样设置吗,还是有其他的,另外我查看了repo中关于terraform的pipeline,没有看到有关于backend的设置,能帮忙指出是具体哪个pipeline吗

terraform init的会指定相关的配置。

terraform init
-backend-config=“address=https://gitlab.com/api/v4/projects//terraform/state/”
-backend-config=“lock_address=https://gitlab.com/api/v4/projects//terraform/state//lock”
-backend-config=“unlock_address=https://gitlab.com/api/v4/projects//terraform/state//lock”
-backend-config=“username=”
-backend-config=“password=”
-backend-config=“lock_method=POST”
-backend-config=“unlock_method=DELETE”
-backend-config=“retry_wait_min=5”

好的,我试试。十分感谢

我写好backend之后通过pipeline中include官方的terraform去执行,但是在执行第三步build的时候报错,日志如下:
$ cd “${TF_ROOT}”

$ gitlab-terraform plan

Initializing the backend…

Successfully configured the backend “http”! Terraform will automatically

use this backend unless the backend configuration changes.

Error refreshing state: HTTP remote state endpoint requires auth

我开始以为是access-token不对又重新生成了一个,username也是换了用户之后有换成邮箱,提示同样的错误,请问该如何解决报错问题

如果是在流水线中运行gitlab-terraform的话,相关的配置不用自己生成了。
有些变量是内置的,并且自动生成的 → GitLab Terraform helpers | GitLab

你的流水线里都声明了哪些变量?

成功了,非常感谢

还想请教下terraform init是在什么阶段执行的,CI中没找到相关的步骤

可以看下这个脚本 https://gitlab.com/gitlab-org/terraform-images/-/blob/master/src/bin/gitlab-terraform.sh

看到了,非常感谢

执行成功后在terraform中有个锁定按钮,请问这个锁定是指锁定后就无法执行apply了还是其他什么功能

应该是没有办法更新states了

那么ci中的apply还是能继续执行?

根据测试情况,在state文件被锁定的情况下,执行命令时会报错‘Error acquiring the state lock’,可以保证被其他人篡改的情况

1 个赞