main.networking.segments.tf (46 lines of code) (raw):
#Get the currently configured gateways
data "azapi_resource_action" "avs_gateways" {
type = "Microsoft.AVS/privateClouds/workloadNetworks/gateways@2023-09-01"
method = "GET"
resource_id = "${azapi_resource.this_private_cloud.id}/workloadNetworks/default/gateways"
response_export_values = ["*"]
}
#Create the segments
resource "azapi_resource" "segments" {
for_each = var.segments
type = "Microsoft.AVS/privateClouds/workloadNetworks/segments@2023-09-01"
body = {
properties = {
connectedGateway = each.value.connected_gateway == null ? [for value in jsondecode(data.azapi_resource_action.avs_gateways.output).value : upper(value.name) if strcontains(value.name, "tnt")][0] : each.value.connected_gateway
displayName = each.value.display_name
subnet = {
dhcpRanges = each.value.dhcp_ranges
gatewayAddress = each.value.gateway_address
}
}
}
name = each.key
parent_id = "${azapi_resource.this_private_cloud.id}/workloadNetworks/default"
timeouts {
create = "4h"
delete = "4h"
}
depends_on = [
azapi_resource.this_private_cloud,
azapi_resource.clusters,
azurerm_role_assignment.this_private_cloud,
azurerm_monitor_diagnostic_setting.this_private_cloud_diags,
#azapi_update_resource.managed_identity,
azapi_update_resource.customer_managed_key,
azapi_resource.hcx_addon,
azapi_resource.hcx_keys,
azapi_resource.srm_addon,
azapi_resource.vr_addon,
azurerm_express_route_connection.avs_private_cloud_connection,
azurerm_express_route_connection.avs_private_cloud_connection_additional,
azapi_resource.avs_private_cloud_expressroute_vnet_gateway_connection,
azapi_resource.avs_private_cloud_expressroute_vnet_gateway_connection_additional,
azapi_resource.globalreach_connections,
azapi_resource.avs_interconnect,
azapi_resource.dns_forwarder_zones,
azapi_resource_action.dns_service,
azapi_resource.dhcp
]
}