针对不同环境的Terraform远程状态
如何管理不同环境的远程状态?我最初想在远程状态定义中使用变量,但意识到我不能使用以下变量:针对不同环境的Terraform远程状态,terraform,Terraform,如何管理不同环境的远程状态?我最初想在远程状态定义中使用变量,但意识到我不能使用以下变量: provider "aws" { region = "ap-southeast-1" } terraform { backend "s3" { bucket = "${var.state_bucket}" key = "${var.state_key}" region = "ap-southeast-1" } } data "terraform_remote_sta
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"
}
}
但我意识到我不能在这种情况下使用变量?我可以对bucket名称进行硬编码,但不同环境下的bucket可能不同您需要使用Terraform所称的工作空间。以下是文件: 所以你们有一个状态块叫做:MyStateKey 使用工作空间时,它会将工作空间名称附加到现有键的末尾。例如,如果您创建了一个名为“dev”的工作区,那么处于远程状态的密钥将是“MyStateKey:dev”
我建议您使用一些约定来简化操作,比如将“默认”工作区用作生产,并使用其他环境命名的其他工作区。然后,当您运行terraform时,您可以设置工作空间或使用TF_workspace环境变量来设置它。可能的重复基于建议的重复和上述问题,是否可以为
键和桶提供数据?我们有一个惯例,确保从不使用default
,基本上有一个资源检查terraform。workspace
不是“默认”,否则它会停止。这样做的目的是,最好明确说明您的目标环境。