Как передать значение Dynami c в имя переменной во время выполнения? - PullRequest
0 голосов
/ 15 марта 2020

Вот что у меня есть:

locals {
  timeseries = "desktop"
}

dynamic "request" {
  for_each = var.query_"#{local.timeseries}"_timeseries
  content {
    q     = request.value.q
    type  = request.value.type
    style = request.value.style
  }
}

Что я ожидаю:

for_each = var.query_desktop_timeseries

1 Ответ

1 голос
/ 16 марта 2020

Если я правильно понимаю ваш вопрос, вы пытаетесь разрешить имя переменной с помощью интерполяции. В terraform это невозможно сделать.

Если вы хотите разрешить конкретный список значений, основанный на значении переменных, вы можете сделать это, используя map для , сопоставьте ваше значение с переменными, к которым они разрешают.

Например, у вас может быть что-то вроде

locals {
  timeseries = "desktop"

  timeseries_lookup = {
    desktop = var.query_desktop_timeseries
    # Other mappings would go here
  }
}

Это может затем использоваться, очень похоже на ваш желаемый вариант использования, например следующие

  for_each = local.timeseries_lookup[local.timeseries]
...