Терраформная интерполяция для списков? - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь использовать terraform gitlab-провайдера.И я хочу передать карты в виде списков и вызвать их в модуле.

Как мне этого добиться?Есть ли здесь какой-либо синтаксис интерполяции?

# names and can_create_groups
variable "names" {
  type    = "list"
  default = [
    {
     "name"             = "test"
     "username"         = "test"
     "email"            = "test@xxxxx.com"
     "project_limit"    = "100"
     "can_create_groups"= "false"
     "is_admin"         = "false"
    },
    {
     "name"             = "test2"
     "username"         = "tetst.2"
     "email"            = "test2@xxxx.com"
     "project_limit"    = "100"
     "can_create_groups"= "true"
     "is_admin"         = "false"
    }
  ]
}

GIT - Пользователи

resource "gitlab_user" "user" {
  name             = "${element(var.names,count.index)}"
  username         = "${element(var.names,count.index)}"
  password         = "dummypassword"
  email            = "${element(var.names,count.index)}"
  is_admin         = "${element(var.names,count.index)}"
  projects_limit   = "${element(var.names,count.index)}"
  can_create_group = "${element(var.names,count.index)}"
  count            = 2
}

ошибка: ошибка: gitlab_user.user: 2 произошла ошибка:

  • gitlab_user.user [0]: element: element () может использоваться только с плоскими списками, этот список содержит элементы типа map в:

$ {element (var.names), count.index)} * gitlab_user.user [1]: element: element () может использоваться только с плоскими списками, этот список содержит элементы типа map в:

$ {element (var.names,count.index)}

Ответы [ 2 ]

0 голосов
/ 24 января 2019
resource "gitlab_user" "user" {
  name             = "${lookup(var.gitlab_users[count.index], "name")}"
  username         = "${lookup(var.gitlab_users[count.index], "username")}"
  password         = "dummypassword"
  email            = "${lookup(var.gitlab_users[count.index], "email")}"
  is_admin         = "${lookup(var.gitlab_users[count.index], "is_admin")}"
  projects_limit   = "${lookup(var.gitlab_users[count.index], "projects_limit")}"
  can_create_group = "${lookup(var.gitlab_users[count.index], "can_create_groups")}"
  count            = "${length(var.gitlab_users)}"
}
0 голосов
/ 21 сентября 2018

Вы можете использовать некоторые из встроенных функций Terraform , чтобы заставить его работать

resource "gitlab_user" "user" {
  name             = "${lookup(var.names, element(keys(var.names), count.index))}"
  password         = "dummypassword"

  etc, etc, etc

  count            =  "${length(keys(var.names))}"
}
...