我对 terraform 还很陌生,我正在尝试学习和编写 TF 代码来自动化 Azure VM 部署。我试图将每个部分作为模块(rg 除外)来覆盖,而不是将其保存在单个 main.tf 文件中。
我正在创建一个内部包含 3 个子网的 Vnet。 请找到我的子网模块代码。请帮我解决以下两点。
子网.tf
resource "azurerm_subnet" "SUBNETS" {
for_each=var.Subnetlist
name=each.value.name
address_prefixes=[each.value.address]
resource_group_name = var.resource_group_name
virtual_network_name = var.virtual_network_name
}
网卡.tf
resource "azurerm_network_interface" "NETWORKINTERFACE" {
for_each=var.niclist
name = each.value.name
location = var.location
resource_group_name = var.resource_group_name
ip_configuration {
name = "ipconfig1"
subnet_id =
private_ip_address_allocation = "Dynamic"
}
}
- 如何输出(三个已创建子网的)subnet_ids。
- 如何将这些subnet_id传递给另一个模块(例如创建网络接口(interface))
最佳答案
- 由于使用
for_each
,您的azurerm_subnet.SUBNETS
是一张 map :
output "subnet_ids" {
value = values(azurerm_subnet.SUBNETS)[*].id
}
- 将其作为任何其他变量传递:
module "myothermodule" {
source = "./modulepath"
subnets_ids = module.mysubnetmodule.subnet_ids
}
关于azure - Terraform 输出多个子网 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71115148/