gpt4 book ai didi

azure - 使用 for_each 循环创建的多个子网的值的输出

转载 作者:行者123 更新时间:2023-12-03 05:22:47 26 4
gpt4 key购买 nike

我使用 for_each 循环创建了一些子网,如下所示

子模块中的main.tf

resource "azurerm_subnet" "obc_subnet" {
name = var.subnet_name
address_prefixes = var.address_prefixes
resource_group_name = var.resource_group_name
virtual_network_name = var.vnet_name
}

根模块中的main.tf

module "deploy_subnet" {
source = "./modules/azure_subnet"
for_each = var.prefix
subnet_name = each.value["name"]
address_prefixes = [each.value["cidr"]]
subscription_id = var.subscription_id
resource_group_name = var.resource_group_name
region = var.region
vnet_name = var.vnet_name
}

根模块中的variables.tf

variable "prefix" {
type = map(object({
name = string
cidr = string
}))
default = {
sub-1 = {
name = "aks-sn"
cidr = "10.0.1.0/24"
}
sub-2 = {
name = "postgres-sn"
cidr = "10.0.2.0/24"
}
sub-3 = {
name = "keyvault-sn"
cidr = "10.0.3.0/24"
}
}
}

一切正常,除了当我尝试输出与 3 个子网关联的值(例如 id)时

我尝试在输出中使用 for k 语法,但我并不真正理解它应该是什么样子。

我的子模块的output.tf中有以下内容

output "subnet_ids" {
value = tomap({
for k, subnets in azurerm_subnet.obc_subnet : k => subnets.id
})
}

我不太确定如何处理根模块中的output.tf,所以我将其保留为原样

output "subnet_id" {
value = module.deploy_subnet.subnet_id
}

我收到一个错误,该值没有属性

Error: 

Unsupported attribute
on modules/azure_subnet/output.tf line 3, in output "subnets_id":
3: for k, subnets in azurerm_subnet.obc_subnet : k => subnets.is

This value does not have any attributes.

最佳答案

接近,但相反。

子模块中的 azurerm_subnet 资源不是集合,因此输出应该只是:

output "subnet_id" {
value = azurerm_subnet.obc_subnet.id
}

但是在根模块中你有子模块的集合。例如:

output "subnet_ids" {
value = {
for k, subnet in module.deploy_subnet : k => subnet.subnet_id
}
}

关于azure - 使用 for_each 循环创建的多个子网的值的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70882915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com