我可以将 Terraform 配置为不在 S3 上工作区状态文件路径的路径中使用“env:”吗?

Jam*_*ams 3 terraform terraform-provider-aws

我将 S3 用于 Terraform 的远程状态。

当我使用Terraform工作区则对环境的状态文件的路径最终被s3://<bucket>/env:/<workspace>/<key>其中<bucket>key在一个指定terraform的块。例如,使用以下 Terraform HCL:

terraform {
  backend "s3" {
    bucket = "devops"
    key = "tf-state/abc/xyz.tfstate"
    region = "us-east-1"
  }
}

Run Code Online (Sandbox Code Playgroud)

如果我们使用 Terraform 工作区,如下所示:

$ terraform workspace new myapp-dev
$ terraform workspace select myapp-dev
$ terraform init
$ terraform apply
Run Code Online (Sandbox Code Playgroud)

然后我们将在以下路径中得到 Terraform 状态文件: s3://devops/env:/myapp-dev/tf-state/abc/xyz.tfstate

似乎 Terraform 默认使用一个名为的子目录,env:在该子目录下管理与工作区关联的状态文件。我的问题是我们可以在 Terraform 配置中添加任何内容,让我们能够控制这env:部分内容吗?

msm*_*ens 8

使用非默认工作区时,S3 存储桶中的状态路径包含 的值workspace_key_prefix,例如:

/<workspace_key_prefix>/<workspace_name>/<key>
Run Code Online (Sandbox Code Playgroud)

默认值workspace_key_prefixenv:。您可以将配置更改为:

terraform {
  backend "s3" {
    bucket = "devops"
    key = "terraform.tfstate"
    region = "us-east-1"
    workspace_key_prefix = "tf-state"
  }
}
Run Code Online (Sandbox Code Playgroud)

然后,在使用myapp-dev工作区时,状态文件将为s3://devops/tf-state/myapp-dev/terraform.tfstate.


归档时间:

查看次数:

687 次

最近记录:

5 年,3 月 前