Terraform 地形根据条件选择资源

Terraform 地形根据条件选择资源,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,有没有办法为选择资源本身添加if条件 如果env=dev,我需要下面的资源 resource "aws_rds_cluster" "myDB" { cluster_identifier = "aurora-cluster-demo" engine = "aurora-mysql" engine_version = "5.7.mysql

有没有办法为选择资源本身添加if条件

如果env=dev,我需要下面的资源

resource "aws_rds_cluster" "myDB" {
  cluster_identifier      = "aurora-cluster-demo"
  engine                  = "aurora-mysql"
  engine_version          = "5.7.mysql_aurora.2.03.2"
  availability_zones      = ["us-west-2a", "us-west-2b", "us-west-2c"]
  database_name           = "mydb"
  master_username         = "foo"
  master_password         = "bar"
  backup_retention_period = 5
  preferred_backup_window = "07:00-09:00"
}

 resource "route53" "dns" {
 }
其他低于资源

resource "aws_rds_cluster" "myDB" {
  cluster_identifier      = "aurora-cluster-demo"
  engine                  = "aurora-postgres"
  engine_version          = "5.7.mysql_aurora.2.03.2" 
  database_name           = "mydb"
  master_username         = "foo"
  master_password         = "bar" 
  preferred_backup_window = "07:00-09:00"
}
一种方法是,我可以开始添加以下所有变量,或者创建一个局部变量。 engine=var.env=dev?“aurora mysql”:“aurora postgres”


有没有其他方法可以禁用资源本身?

也许类似的方法也可以在
count


resource "aws_rds_cluster" "myDB-mysql" {
  count                   = var.env == dev ? 1 : 0
  cluster_identifier      = "aurora-cluster-demo"
  engine                  = "aurora-mysql"
  engine_version          = "5.7.mysql_aurora.2.03.2"
  availability_zones      = ["us-west-2a", "us-west-2b", "us-west-2c"]
  database_name           = "mydb"
  master_username         = "foo"
  master_password         = "bar"
  backup_retention_period = 5
  preferred_backup_window = "07:00-09:00"
}

resource "aws_rds_cluster" "myDB-postgres" {
  count                   = var.env != dev ? 1 : 0
  cluster_identifier      = "aurora-cluster-demo"
  engine                  = "aurora-postgres"
  engine_version          = "5.7.mysql_aurora.2.03.2" 
  database_name           = "mydb"
  master_username         = "foo"
  master_password         = "bar" 
  preferred_backup_window = "07:00-09:00"
}


Count我无法添加,因为所有的地形资源可能都没有Count。为什么不使用Count?有什么具体原因吗?当我考虑另一个解决方案时。@kcoder
count
有什么问题吗?这是它的主要用例之一。我的资源名称与“myDB”相同,因为此资源正在其他地方使用。想要保持相同的资源名称好吧,我可能不知道这个问题的另一个选项。但是你可以将myDB作为局部变量来操作,并在任何地方引用它。Terraform的哪个版本?嗨,Terraform-12