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_文件
(我从未使用过)似乎强制输入字符串:/