Следующее должно делать то, что вы ожидаете (синтаксис проверен, однако apply
не был проверен: я обновлю ответ, если он будет работать, или удалю его в противном случае).
Сначала вы должныгде-то есть отображение между движками и портами по умолчанию (здесь это переменная, но она может храниться в Консуле, как ваш config_map
):
variable "default_ports_by_engine" {
type = "map"
# key = engine, value = port
default = {
"postgres" = "3333"
"mysql" = "3334"
# other engines/ports...
}
}
Затем вы можете использовать эту переменную во вложенномlookup:
resource "aws_db_instance" "db" {
engine = "${lookup(config_map, "db_engine", "postgres")}"
port = "${
lookup(
var.default_ports_by_engine,
"${lookup(config_map, "db_engine", "postgres")}"
)
}"
}
Обратите внимание, что отсутствие передачи третьего аргумента функции lookup
приведет к сбою Terraform, если db_engine
не найден в default_ports_by_engine
.