Вывод вывода null_data_source в виде простых карт вместо массива карт в terraform - PullRequest
0 голосов
/ 05 февраля 2019
Terraform v0.11.11
+ provider.null v2.0.0

введите код здесь

variable "vpc1" {
  type = "list"

  default = [
    "name1:ip1:az1:dedicated",
    "name2:ip2:az2:dedicated",
  ]
}

variable vpc2 {
  type = "list"

  default = [
    "foo:10.1:east:yes",
    "bar:10.2:west:no",
  ]
}

data "null_data_source" "values" {
  count = "${length(var.vpc1)}"

  inputs = "${
          map (

                "${element(split(":",var.vpc1[count.index]),0)}",
               "${element(split(":", var.vpc2[count.index]),0)}"
              )
        }"
}

output "mappings" {
  value = "${data.null_data_source.values.*.outputs}"
}

Как получить желаемый результат, Чего мне не хватает

1 Ответ

0 голосов
/ 05 февраля 2019

Вам нужна функция flatten()

  output  "mappings" {
    value = "${flatten(data.null_data_source.values.*.outputs)}"
  }

И есть простой способ получить то, что вам нужно с помощью функции concat()

variable "vpc1" {
  type = "list"

  default = [
    "name1:ip1:az1:dedicated",
    "name2:ip2:az2:dedicated",
  ]
}

variable vpc2 {
  type = "list"

  default = [
    "foo:10.1:east:yes",
    "bar:10.2:west:no",
  ]
}

output "mappings" {
  value = "${flatten(concat(var.vpc1, var.vpc2))}"
}

Вот вывод

$ terraform apply

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Outputs:

mappings = [
    name1:ip1:az1:dedicated,
    name2:ip2:az2:dedicated,
    foo:10.1:east:yes,
    bar:10.2:west:no
]

ссылка:

https://www.terraform.io/docs/configuration/interpolation.html#flatten-list-of-lists-

https://www.terraform.io/docs/configuration/interpolation.html#concat-list1-list2-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...