【问题标题】:terraform select a resource based on conditionterraform 根据条件选择资源
【发布时间】:2021-01-12 18:06:04
【问题描述】:

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

如果 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"

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

【问题讨论】:

  • 什么版本的 Terraform?
  • 嗨,terraform-12

标签: terraform terraform-provider-aws


【解决方案1】:

也许这样的事情也应该在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"
}

【讨论】:

  • 无法添加计数,因为所有 terraform 资源可能都没有计数
  • 你为什么不想用 count 任何具体的原因呢?我正在考虑另一种解决方案。
  • @kcoder count 有什么问题?这是它的主要用例之一。
  • 我的资源名称是相同的“myDB”,因为这个资源正在被其他地方使用。想要保持相同的资源名称
  • 好吧,我可能不知道这个问题的另一种选择。但是您可以将 myDB 作为局部变量来操作并在任何地方引用它。
猜你喜欢
  • 2018-01-21
  • 1970-01-01
  • 2017-12-09
  • 2020-12-26
  • 1970-01-01
  • 2017-06-11
  • 2020-01-31
  • 2011-11-12
  • 1970-01-01
相关资源
最近更新 更多