Terraform 012升级-带模块调用的cidrsubnet
terraform升级0.12后,我无法再在自定义模块上调用cidrhost 投诉是“前缀”必须是字符串类型 只是尝试通过cidrhost修改自定义模块中的0索引元素,这相当简单 尝试了“tostring”和其他各种操作,但仍然没有解决方案Terraform 012升级-带模块调用的cidrsubnet,terraform,Terraform,terraform升级0.12后,我无法再在自定义模块上调用cidrhost 投诉是“前缀”必须是字符串类型 只是尝试通过cidrhost修改自定义模块中的0索引元素,这相当简单 尝试了“tostring”和其他各种操作,但仍然没有解决方案 module "network1_subnets" { inside_subnets = ["1"] inside_subnets_name = ["Networking1"] source = "./insi
module "network1_subnets" {
inside_subnets = ["1"]
inside_subnets_name = ["Networking1"]
source = "./inside_subnets"
vpc_cidr = aws_vpc.main.cidr_block
vpc_id = aws_vpc.main.id
dc_name = var.DC_NAME
}
resource "aws_subnet" "inside_subnets-a" {
count = length(var.inside_subnets)
vpc_id = var.vpc_id
availability_zone = data.aws_availability_zones.available.names[0]
cidr_block = cidrsubnet(
cidrsubnet(var.vpc_cidr, 8, element(var.inside_subnets, count.index)),
1,
0,
)
#tags = {
# Name = ${lower(var.dc_name)}-${element(var.inside_subnets_name,
count.index)}-pri
#}
}
data "template_file" "prdfwl00_init" {
template = file("prdfwl00-config.tpl")
vars = {
network1 = cidrhost(element(module.network1_subnets.subnets-
a, 0), 4)
}
}
错误:
这似乎是
子网-a
输出的问题,而不是cidrhost
调用的问题。具体来说,模块似乎是一个列表列表,而不是字符串列表
您在这里的问题中没有包含输出“subnets-a”
的定义,但我的猜测是,如果您查看定义,您会发现它包含如下内容:
output "subnets-a" {
value = [some-other-expression]
}
如果是这样,您可以删除括号以避免创建一个元素列表,而只返回其他表达式(不管它实际上是什么):
只要您的实际表达式生成一个字符串列表,您就应该得到您想要的结果
有关此问题的更多信息,请参阅升级指南部分。这似乎是子网-a
输出的问题,而不是cidrhost
调用的问题。具体来说,模块似乎是一个列表列表,而不是字符串列表
您在这里的问题中没有包含输出“subnets-a”
的定义,但我的猜测是,如果您查看定义,您会发现它包含如下内容:
output "subnets-a" {
value = [some-other-expression]
}
如果是这样,您可以删除括号以避免创建一个元素列表,而只返回其他表达式(不管它实际上是什么):
只要您的实际表达式生成一个字符串列表,您就应该得到您想要的结果
升级指南部分中有关于这个问题的更多信息。很有趣-我没有想到输出。事实上,我正在输出到一个列表,该列表需要在以后检索这些值。输出“subnets-a”{value=[aws_subnets.inside_subnets-a.*.cidr_block,]}flatte(),如文档中所示(我查看了该文档,但没有看到),这是正确的答案。有趣的是,我没有想到输出。事实上,我正在输出到一个列表,该列表需要在以后检索这些值。输出“subnets-a”{value=[aws_subnets.inside_subnets-a.*.cidr_block,]}flatte(),如文档中所示(我查看了该文档,但没有看到),这是这里的正确答案。
output "subnets-a" {
value = some-other-expression
}