как реализовать динамическое сопоставление в terraform?

Как написать оператор if в terraform для запуска следующего блока с разными значениями в зависимости от среды, которая будет указана в переменной.

root_block_device {
    volume_type = "gp2"
    volume_size = "30"
  }

  ebs_block_device = {
    device_name = "dfgh"
    volume_type = "gp2"
    volume_size = "5"
    encrypted = true
  }

Например, если я хочу, чтобы аргумент volume_size был равен 30 для тестовой среды и 50 для рабочей среды?


person Mohamed Wali    schedule 15.01.2019    source источник
comment
Где вы определяете среду? Это, например, переменная, рабочая область, ветка git?   -  person Matt Schuchard    schedule 15.01.2019


Ответы (1)


Вы не можете использовать оператор if в Terraform, поскольку это декларативный язык.

Однако есть обходной путь для достижения того, что вы ищете.

...

  root_block_device {
    volume_type = "gp2"
    volume_size = "${lookup(var.volume_sizes, var.env)}"
  }

...

variable "env" {
  default = "test"
}

variable "volume_sizes" {
  default = {
    "test" = "30"
    "production" = "50"
  }
}

Затем вы можете изменить значение размера тома, изменив переменную env с test на production.

person Quentin Revel    schedule 15.01.2019