如何管理不同环境的远程状态?我本来想在远程状态定义中使用变量,但意识到我不能使用诸如
的变量provider "aws" {
region = "ap-southeast-1"
}
terraform {
backend "s3" {
bucket = "${var.state_bucket}"
key = "${var.state_key}"
region = "ap-southeast-1"
}
}
data "terraform_remote_state" "s3_state" {
backend = "s3"
config {
bucket = "${var.state_bucket}"
key = "${var.state_key}"
region = "ap-southeast-1"
}
}
但是意识到在这种情况下我不能使用变量吗?我可以对存储桶名称进行硬编码,但在不同环境中存储桶可能不相同
答案 0 :(得分:1)
您将要使用Terraform所谓的工作区。这是文档:https://www.terraform.io/docs/state/workspaces.html
这样,您就有了一个状态:MyStateKey
使用工作空间时,它将工作空间名称附加到现有键的末尾。例如,如果您创建了一个名为“ dev”的工作区,则处于远程状态的键将为“ MyStateKey:dev”。
我建议您使用一些约定来简化操作,例如将“默认”工作空间用作生产环境,并使用以其他环境命名的其他工作空间。然后,当您运行Terraform时,您可以设置工作空间或使用TF_WORKSPACE环境变量进行设置。