Terraform子网呼叫虚拟网关



如何将子网称为虚拟网络网关?

resource "azurerm_virtual_network" "virtual_network" {
name                = "vNetVPN-Dev"
location            = var.resource_group_location_north_europe
resource_group_name = var.resource_group_name
address_space       = ["10.1.16.0/23", "10.2.0.0/16", "172.16.100.0/24"]
subnet {
name           = "snet-vpg-dev"
address_prefix = "10.2.1.0/24"
}
tags = {
environment = var.tag_dev
}
}

虚拟网关

resource "azurerm_virtual_network_gateway" "virtual_network_gateway" {
name                = "vgw-vgp-dev"
location            = var.resource_group_location_north_europe
resource_group_name = var.resource_group_name
type     = "Vpn"
vpn_type = "RouteBased"
active_active = false
enable_bgp    = false
sku           = "Basic"
ip_configuration {
name                          = azurerm_public_ip.public_ip_address.name
public_ip_address_id          = azurerm_public_ip.public_ip_address.id
private_ip_address_allocation = "Static"
subnet_id                     = **here I wan to call my subnet which is defined in the code above**
}
}

所以你可以看到有2个代码块,一个是子网,另一个是虚拟网络网关。

我想引用子网(snet-vpg-dev))作为参数subnet_id的值传入虚拟网络网关

要获得子网的Id,您可以获取vnet的子网导出属性,将其转换为列表并获取第一个元素,如下所示

ip_configuration {
name                          = azurerm_public_ip.public_ip_address.name
public_ip_address_id          = azurerm_public_ip.public_ip_address.id
private_ip_address_allocation = "Static"
subnet_id                     = tolist(azurerm_virtual_network.virtual_network.subnet)[0].id
}
另一个解决方案是使用azurerm_subnet

资源,而不是内联子网块。 https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/subnet

您可以直接检索子网的id,因为它有一个专用的资源

模板类似于

resource "azurerm_virtual_network" "virtual_network" {
name                = "vNetVPN-Dev"
location            = var.resource_group_location_north_europe
resource_group_name = var.resource_group_name
address_space       = ["10.1.16.0/23", "10.2.0.0/16", "172.16.100.0/24"]
tags = {
environment = var.tag_dev
}
}
resource "azurerm_subnet" "subnet" {
name                 = "vNetVPN-Dev"
resource_group_name  = var.resource_group_name
virtual_network_name = azurerm_virtual_network.virtual_network.name
address_prefixes     = ["10.2.1.0/24"]
}

虚拟网关

resource "azurerm_virtual_network_gateway" "virtual_network_gateway" {
name                = "vgw-vgp-dev"
location            = var.resource_group_location_north_europe
resource_group_name = var.resource_group_name
type     = "Vpn"
vpn_type = "RouteBased"
active_active = false
enable_bgp    = false
sku           = "Basic"
ip_configuration {
name                          = azurerm_public_ip.public_ip_address.name
public_ip_address_id          = azurerm_public_ip.public_ip_address.id
private_ip_address_allocation = "Static"
subnet_id                     = azurerm_subnet.subnet.id
}
}

最新更新