输出null_data_source输出为纯的地图,而不是在terraform地图阵列

问题描述 投票:1回答:1
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}"
}

如何获得所需的输出,我在想什么

terraform
1个回答
1
投票

你需要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-

© www.soinside.com 2019 - 2024. All rights reserved.