При создании подсетей в виде блоков вы должны ссылаться на них, используя синтаксис списка, например:
foo = azurerm_virtual_network.virtual-network.subnet[0].id
bar = azurerm_virtual_network.virtual-network.subnet[1].id
Это полезно, если подсети образуют пул избыточных ресурсов, и вам не нужно ссылаться на какую-либо подсеть.особенно.
Я не верю, что это ваш случай, поэтому вы можете подумать о создании своих подсетей как отдельных ресурсов, например:
resource "azurerm_virtual_network" "main" {
name = "${var.ClientShortName}-az-network"
address_space = [local.AzureInfraNetwork]
location = var.resource-location
resource_group_name = azurerm_resource_group.test-resource-group.name
}
resource "azurerm_subnet" "server" {
virtual_network_name = azurerm_virtual_network.main.name
name = "ServersSubnet"
address_prefix = local.ServersSubnet
}
resource "azurerm_subnet" "gateway" {
virtual_network_name = azurerm_virtual_network.main.name
name = "GatewaySubnet"
address_prefix = local.ServersSubnet
}
Затем вы можете ссылаться на одну из ваших подсетей, используя атрибут обычного объектасинтаксис:
foo = azurerm_subnet.server.id
Также обратите внимание, что я использую синтаксис terraform => 0.12
, поэтому я могу написать foo.bar
вместо "${foo.bar}"
, когда мне не нужна интерполяция строк.