在Terraform中使用工作区时如何更改本地后端状态的路径?

时间:2019-05-22 14:26:57

标签: automation terraform

将Terraform workspaceslocal backend结合使用的预期配置是什么?

本地后端支持workpacing,但是您似乎并不能完全控制存储实际状态的 位置。

当您不使用工作空间时,可以向本地后端提供一个path参数,以控制状态文件的存储位置。

# Either in main.tf
terraform {
  backend "local" {
    path = "/path/to/terraform.tfstate
  }
}

# Or as a flag
terraform init -backend-config="path=/path/to/terraform.tfstate"

我期望使用工作空间时具有类似的功能,因为您将提供path的目录,并且工作空间将在该目录下创建

例如:

terraform new workspace first
terraform init -backend-config="path=/path/to/terraform.tfstate.d"
terraform apply
terraform new workspace second
terraform init -backend-config="path=/path/to/terraform.tfstate.d"
terraform apply

将导致状态

/path/to/terraform.tfstate.d/first/terraform.tfstate
/path/to/terraform.tfstate.d/second/terraform.tfstate

但是事实并非如此。看来本地后端会忽略path参数,并将工作区配置放在工作目录中。

我错过了什么吗?还是无法控制本地后端工作区状态?

1 个答案:

答案 0 :(得分:0)

解决此问题的本地后端workspace_dir有一个未记录的标志。

跟踪文档任务here

terraform {
  backend "local" {
    workspace_dir = "/path/to/terraform.tfstate.d"
  }
}