Сверху головы я могу придумать три разных способа объединения переменных для использования в качестве ключа поиска:
variable "tenant" {}
variable "environment" {}
variable "vm_network" {
default = {
T1_PROD = "T1-PROD-network"
T2_PROD = "T2-PROD-network"
T1_TEST = "T1-TEST-network"
T2_TEST = "T2-TEST-network"
}
}
locals {
tenant_environment = "${var.tenant}_${var.environment}"
}
output "local_network" {
value = "${lookup(var.vm_network, local.tenant_environment)}"
}
output "format_network" {
value = "${lookup(var.vm_network, format("%s_%s", var.tenant, var.environment))}"
}
output "lookup_network" {
value = "${lookup(var.vm_network, "${var.tenant}_${var.environment}")}"
}
Первый вариант использует locals для создания переменной, которая уже интерполирована и может быть легко использована повторно в нескольких местах, что невозможно сделать напрямую с переменными в Terraform / HCL. Как правило, это лучший способ сделать комбинацию / интерполяцию переменных в более поздних версиях Terraform (они были введены в Terraform 0.10.3).
Второй параметр использует функцию format
для создания строки, содержащей переменные владельца и среды.
Последний выглядит немного забавно, но это действительный HCL. Я бы, вероятно, уклонился от использования этого синтаксиса, если это возможно.