我可以将 Terraform 配置为不在 S3 上工作区状态文件路径的路径中使用 "env:" 吗?
Can I configure Terraform to not use "env:" in the path for a workspace's state file path on S3?
我将 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"
}
}
如果我们使用 Terraform 工作区,像这样:
$ terraform workspace new myapp-dev
$ terraform workspace select myapp-dev
$ terraform init
$ terraform apply
然后我们将在以下路径中得到 Terraform 状态文件:s3://devops/env:/myapp-dev/tf-state/abc/xyz.tfstate
Terraform 似乎默认使用名为 env:
的子目录,在该子目录下管理与工作区关联的状态文件。我的问题是,我们能否在 Terraform 配置中添加任何内容,使我们能够控制其中的 env:
部分?
使用非默认工作区时,S3 存储桶中的状态路径包括
workspace_key_prefix
的值,例如:
/<workspace_key_prefix>/<workspace_name>/<key>
workspace_key_prefix
的默认值为env:
。您可以将配置更改为:
terraform {
backend "s3" {
bucket = "devops"
key = "terraform.tfstate"
region = "us-east-1"
workspace_key_prefix = "tf-state"
}
}
然后,当使用 myapp-dev
工作区时,状态文件将为 s3://devops/tf-state/myapp-dev/terraform.tfstate
。
我将 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"
}
}
如果我们使用 Terraform 工作区,像这样:
$ terraform workspace new myapp-dev
$ terraform workspace select myapp-dev
$ terraform init
$ terraform apply
然后我们将在以下路径中得到 Terraform 状态文件:s3://devops/env:/myapp-dev/tf-state/abc/xyz.tfstate
Terraform 似乎默认使用名为 env:
的子目录,在该子目录下管理与工作区关联的状态文件。我的问题是,我们能否在 Terraform 配置中添加任何内容,使我们能够控制其中的 env:
部分?
使用非默认工作区时,S3 存储桶中的状态路径包括
workspace_key_prefix
的值,例如:
/<workspace_key_prefix>/<workspace_name>/<key>
workspace_key_prefix
的默认值为env:
。您可以将配置更改为:
terraform {
backend "s3" {
bucket = "devops"
key = "terraform.tfstate"
region = "us-east-1"
workspace_key_prefix = "tf-state"
}
}
然后,当使用 myapp-dev
工作区时,状态文件将为 s3://devops/tf-state/myapp-dev/terraform.tfstate
。