Terraform 如何修复预期类型';字符串';,获取了无法转换的类型';[]接口{}';?

Terraform 如何修复预期类型';字符串';,获取了无法转换的类型';[]接口{}';?,terraform,Terraform,下面是我使用的代码示例: main.tf module "bar" { ... nets = "${module.foo.nets_ids}" } variable "nets" { description = "nets desc." type = "list" } data "template_file" "k8s_yam

下面是我使用的代码示例:

main.tf

module "bar" {
   ...
   nets   = "${module.foo.nets_ids}"
}
variable "nets" {
  description = "nets desc."
  type        = "list"
}
data "template_file" "k8s_yaml" {
  template = "${file("${path.module}/car.tpl")}"

  vars = {
    ...
    nets     = "${var.nets}"
    ...
  }
}

resource "null_resource" "k8s" {
  provisioner "local-exec" {
    command = "echo '${data.template_file.k8s_yaml.rendered}' | ... "
  }
}
variable "nets" {
  description = "nets desc."
  type        = "list"
}
variables.tf

module "bar" {
   ...
   nets   = "${module.foo.nets_ids}"
}
variable "nets" {
  description = "nets desc."
  type        = "list"
}
data "template_file" "k8s_yaml" {
  template = "${file("${path.module}/car.tpl")}"

  vars = {
    ...
    nets     = "${var.nets}"
    ...
  }
}

resource "null_resource" "k8s" {
  provisioner "local-exec" {
    command = "echo '${data.template_file.k8s_yaml.rendered}' | ... "
  }
}
variable "nets" {
  description = "nets desc."
  type        = "list"
}
模块栏的main.tf

module "bar" {
   ...
   nets   = "${module.foo.nets_ids}"
}
variable "nets" {
  description = "nets desc."
  type        = "list"
}
data "template_file" "k8s_yaml" {
  template = "${file("${path.module}/car.tpl")}"

  vars = {
    ...
    nets     = "${var.nets}"
    ...
  }
}

resource "null_resource" "k8s" {
  provisioner "local-exec" {
    command = "echo '${data.template_file.k8s_yaml.rendered}' | ... "
  }
}
variable "nets" {
  description = "nets desc."
  type        = "list"
}
模块栏的变量。tf

module "bar" {
   ...
   nets   = "${module.foo.nets_ids}"
}
variable "nets" {
  description = "nets desc."
  type        = "list"
}
data "template_file" "k8s_yaml" {
  template = "${file("${path.module}/car.tpl")}"

  vars = {
    ...
    nets     = "${var.nets}"
    ...
  }
}

resource "null_resource" "k8s" {
  provisioner "local-exec" {
    command = "echo '${data.template_file.k8s_yaml.rendered}' | ... "
  }
}
variable "nets" {
  description = "nets desc."
  type        = "list"
}
在我尝试制定地形计划后,我收到:

* module.bar.data.template_file.k8s_yaml: vars: 1 error(s) decoding:

* '[nets]' expected type 'string', got unconvertible type '[]interface {}'
我发现它真的很奇怪,因为我在所有的vars定义中指定了
type:list
,为什么它认为它需要一个字符串呢

这是我的tpl文件的一个片段:

    netsIDs:
    - ${element(var.nets, 0)}
    - ${element(var.nets, 1)}
    - ${element(var.nets, 2)}

显然
netsIDs:${nets}
nets=“${jsonecode(var.nets)}”
解决了这个问题。

我想这是相关的:@Grzegorz Oledzki确实看起来很有希望,但我没有成功地使它工作起来。
template_文件
(我从未使用过)似乎强制输入字符串:/