Azure Terraform中cidrsubnet函数结合count.index报错求助
问题解决:Terraform Azure子网创建报错
错误原因
报错核心是cidrsubnet函数的第一个参数类型错误:函数要求传入字符串格式的CIDR前缀,但你传入了列表["10.88.0.0/16"],导致类型不匹配。
修正后的配置代码
variable "subnet-count" { description = "number of subnets" type = number default = 2 } resource "azurerm_subnet" "subnets" { count = var.subnet-count name = "${var.nameofvnet}-subnet${count.index}" resource_group_name = var.nameofresourcegroup virtual_network_name = var.nameofvnet address_prefixes = [cidrsubnet("10.88.0.0/16", 8, count.index)] }
关键修改点
- 将
cidrsubnet(["10.88.0.0/16"], 8, count.index)改为[cidrsubnet("10.88.0.0/16", 8, count.index)]:- 去掉CIDR前缀的列表包裹,直接传字符串
"10.88.0.0/16"给cidrsubnet函数 address_prefixes字段要求是列表类型,因此把cidrsubnet返回的单个CIDR字符串包裹在列表[]中
- 去掉CIDR前缀的列表包裹,直接传字符串
关于子网名称的疑问
不需要添加输出命令来指定子网名称。当前配置中name = "${var.nameofvnet}-subnet${count.index}"已经通过变量结合count.index动态生成了子网名称(比如count.index为0时名称是xxx-subnet0,为1时是xxx-subnet1),名称逻辑正常,问题和名称指定无关。
内容的提问来源于stack exchange,提问作者user23102966
相关产品推荐
相关产品推荐

