Terraform状态是否为不同的配置文件保存状态



这是我当前的Terraform目录的外观,要部署ECR回购。

├── configs
│   ├── qa-ohio.tfvars
│   ├── qa-ohio.tfvars.template
│   ├── qa-virginia.tfvars
│   └── qa-virginia.tfvars.template
├── ecr.tf
├── provider.tf
└── vars.tf

如果我运行:

terraform apply --var-file=configs/qa-virginia.tfvars

从根目录中,在US-EAST-1(N. Virginia地区(中创建了一个新的ECR回购。如果我现在运行:

terraform apply --var-file=configs/qa-ohio.tfvars

从根目录中,在US-EAST-2(俄亥俄州(中创建了一个新的ECR回购。到目前为止还不错。

我的问题现在出现了,因为Terraform.tfstate现在被第二个命令覆盖。这意味着如果我运行:

terraform destroy --var-file=configs/qa-ohio.tfvars

它将在ECR中销毁仓库(并为Terraform.tfstate清空(,但是如果我运行:

terraform destroy --var-file=configs/qa-virginia.tfvars

什么都不会发生,因为以前的命令已经从Terraform中删除了所有内容。我希望Terraform状态足够聪明,可以知道,如果我们使用不同的环境变量,那么它应该保持不同的状态,情况似乎并非如此。我应该如何处理?

这就是我的文件的样子:

ecr.tf:

resource "aws_ecr_repository" "ecr" {
   name = "web-silver"
}

提供者.tf:

provider "aws" {
  access_key = "${var.AWS_ACCESS_KEY}"
  secret_key = "${var.AWS_SECRET_KEY}"
  region = "${var.REGION}"
}

vars.tf:

variable "AWS_ACCESS_KEY" {}
variable "AWS_SECRET_KEY" {}
variable "REGION" {}

qa-virginia.tfvars

AWS_ACCESS_KEY = "hidden-for-security-purposes"
AWS_SECRET_KEY = "hidden-for-security-purposes"
REGION = "us-east-1"

qa-ohio.tfvars

AWS_ACCESS_KEY = "hidden-for-security-purposes"
AWS_SECRET_KEY = "hidden-for-security-purposes"
REGION = "us-east-2"

其他选项是使用Terragrunt,您可以为本地后端设置自定义路径(使用任何Env的不同配置(

https://github.com/gruntwork-io/terragrunt/issues/399

相关内容

  • 没有找到相关文章

最新更新