Объект списка Terraform в Golang - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь представить список Terraform objects в Go т.е.

variable "map_roles" {
  description = "Additional IAM roles to add to the aws-auth configmap."
  type = list(object({
    rolearn  = string
    username = string
    groups   = list(string)
  }))

Являются ли rolearn и другие базовые c типы или составные, например, карта? И поэтому map_roles - это просто структура строк и фрагмент строки (список), или это структура карт?

1 Ответ

0 голосов
/ 17 апреля 2020

Terratest преобразует значения переменных, заданные в terraform.Options, в -var аргументы командной строки, используя свою внутреннюю функцию toHclString.

От чтения до реализации этой функции и других Кажется, что вызываемые функции преобразуют значение Go []interface{} в синтаксис кортежа Terraform и Go map[string]interface{} в синтаксис объекта Terraform, поэтому допустимое значение для показанного ограничения типа может выглядеть следующим образом:

[]interface{}{
    map[string]interface{}{
        "rolearn":  "foo",
        "username": "bar",
        "groups":   []interface{"baz"},
    },
    map[string]interface{}{
        "rolearn":  "boop",
        "username": "beep",
        "groups":   []interface{"blurp"},
    },
}

Исходя из того, что я прочитал код (примечание: я на самом деле его не тестировал ?), я ожидал, что для генерации значения аргумента -var будет выглядеть так:

-var map_roles='[{"rolearn" = "foo", "username" = "bar", "groups" = ["baz"]},{"rolearn" = "boop", "username" = "beep", "groups" = ["blurp"]}]'
...