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:
部分内容吗?
使用非默认工作区时,S3 存储桶中的状态路径包含 的值workspace_key_prefix
,例如:
/<workspace_key_prefix>/<workspace_name>/<key>
Run Code Online (Sandbox Code Playgroud)
默认值workspace_key_prefix
是env:
。您可以将配置更改为:
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 次 |
最近记录: |