Получить значение для указанного c ключа любого типа в терраформе - PullRequest
1 голос
/ 17 июня 2020

В настоящее время я использую карту типа переменной (строка), как показано ниже, для объявления значений адреса электронной почты типа списка. Это прекрасно работает. однако я предпочитаю использовать тип map (string, list) вместо map (string, string).

variable "email_addresses" {
  type        = map(string)
  default = {
    team1    = "test1@abc.com,test2@abc.com"
    team2    = "test3@abc.com,test4@abc.com"
}

data "template_file" "policies" {
  for_each = local.policies
  template = file(format("${path.module}/policies/%s.yaml", each.key))
  vars = {
    recipients             = lookup(var.email_addresses, element(split("-", each.key), 0), "")
    tag                    = local.tags["name"]
  }
}

Есть ли способ получить значение (ie получателей) для ключа, установив параметр переменная любого типа, как показано ниже.

variable "email_addresses" {
  type        = any
  default = {
    team1 = [
      "test1@abc.com",
      "test2@abc.com"
    ], 
    team2 = [
     "test3@abc.com",
     "test4@abc.com"
    ], 
  }
}

1 Ответ

2 голосов
/ 17 июня 2020

Вы можете уточнить тип объявления переменной следующим образом:

variable "email_addresses" {
  type        = map(list(string))
  default = {
    team1 = [
      "test1@abc.com",
      "test2@abc.com"
    ], 
    team2 = [
     "test3@abc.com",
     "test4@abc.com"
    ], 
  }
}

Затем вы можете убедиться, что ваш массив получателей правильно отформатирован в вашем YAML-файле с помощью функции yamlencode .

data "template_file" "policies" {
  for_each = var.email_addresses
  template = file(format("${path.module}/policies/%s.yaml", each.key))
  vars = {
    recipients             = each.value
    tag                    = local.tags["name"]
  }
}

и в вашем шаблоне:

---
${yamlencode(recipients)}

Обратите внимание, что пара предупреждений об использовании для вашей конфигурации заключается в том, что lookup следует использовать только тогда, когда вы хотите указать значение по умолчанию если ключа не существует и что данные template_file должны быть обновлены с помощью функции файла шаблона .

...