Извлечение ключа / значений из переменной карты Terraform - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь извлечь левое и правое значения из переменной карты terraform, но не могу извлечь левое значение. Ниже мой код: -

variables.tf
  variable "notebook" {
    type = "map"
    default = {
    "01" = "a@a.com"
    "02" = "b@a.com"
    "03" = "c@a.com"
    "04" = "d@a.com"
    ......
  }
}

Ниже мой модуль в main.tf

 module "instance" {
   instance_ip = ["1.1.1.x", "1.1.2.y", "1.1.1.z","1.1.2.p"]
   dns         = ["x", "y", "z","p"]
   name        = ["a", "b", "c",  "d"]
 }

Вывод должен быть следующим: -

 module "instance" {
   instance_ip = ["1.1.1.01", "1.1.2.02", "1.1.1.03","1.1.2.04" and so on]
   dns         = ["01", "02", "03","04" and so on]
   name        = ["a@a.com", "b@a.com", "c@a.com", "d@a.com and so on]
 }

Любой предложения. Я попытался найти переменную, но получил только a@a.com, а не ключ.

1 Ответ

1 голос
/ 24 января 2020

Для этого можно использовать функции keys и values:

# terraform 0.12
module "instance" {
  instance_ip = ["1.1.1.${keys(var.notebook)[0]}", "1.1.1.${keys(var.notebook)[1]}", "1.1.1.${keys(var.notebook)[2]}"]
  dns         = keys(var.notebook)
  name        = values(var.notebook)
}

# terraform 0.11
module "instance" {
  instance_ip = ["1.1.1.${keys(var.notebook)[0]}", "1.1.1.${keys(var.notebook)[1]}", "1.1.1.${keys(var.notebook)[2]}"]
  dns         = ["${keys(var.notebook)}"]
  name        = ["${values(var.notebook)}"]
}
...