терраформирование выбор ресурса на основе условия

#terraform #terraform-provider-aws

#terraform #terraform-поставщик-aws

Вопрос:

есть ли способ добавить условие 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" {
 }
  

остальное ниже reource

 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»

есть ли какой-либо другой способ отключить сам ресурс?

Комментарии:

1. Какая версия Terraform?

2. привет, terraform-12

Ответ №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"
}

  

Комментарии:

1. Количество, которое я не могу добавить, так как все ресурсы terraform могут не иметь количества

2. Почему вы не хотите использовать count по какой-либо конкретной причине? Пока я думаю о другом решении.

3. @kcoder В чем проблема count ? Это один из его основных вариантов использования.

4. мое имя ресурса такое же «myDB», потому что этот ресурс используется в других местах. хотите сохранить то же имя ресурса

5. Ну, я, возможно, не знаю другого варианта ответа на вопрос. Но вы можете манипулировать myDB как локальной переменной и ссылаться на нее везде.