blob: 738f062dfba227c961eae02ef3b690a5a4598ffd [file] [log] [blame]
# *****************************************************************************
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# ******************************************************************************
locals {
endpoint_subnet_name = "${var.service_base_name}-${var.endpoint_id}-subnet"
endpoint_vpc_name = "${var.service_base_name}-${var.endpoint_id}-vpc"
additional_tag = split(":", var.additional_tag)
endpoint_ip_name = "${var.service_base_name}-${var.endpoint_id}-static-ip"
endpoint_nif_name = "${var.service_base_name}-${var.endpoint_id}-nif"
}
resource "azurerm_virtual_network" "endpoint-network" {
count = var.vpc_id == "" ? 1 : 0
name = local.endpoint_vpc_name
location = data.azurerm_resource_group.data-endpoint-resource-group.location
resource_group_name = data.azurerm_resource_group.data-endpoint-resource-group.name
address_space = [var.vpc_cidr]
tags = {
Name = local.endpoint_vpc_name
"${local.additional_tag[0]}" = local.additional_tag[1]
"${var.tag_resource_id}" = "${var.service_base_name}:${local.endpoint_vpc_name}"
"${var.service_base_name}-tag" = local.endpoint_vpc_name
}
}
data "azurerm_virtual_network" "data-endpoint-network" {
name = var.vpc_id == "" ? azurerm_virtual_network.endpoint-network.0.name : var.vpc_id
resource_group_name = data.azurerm_resource_group.data-endpoint-resource-group.name
}
resource "azurerm_subnet" "endpoint-subnet" {
count = var.subnet_id == "" ? 1 : 0
name = local.endpoint_subnet_name
resource_group_name = data.azurerm_resource_group.data-endpoint-resource-group.name
virtual_network_name = data.azurerm_virtual_network.data-endpoint-network.name
address_prefix = var.subnet_cidr
}
data "azurerm_subnet" "data-endpoint-subnet" {
name = var.subnet_id == "" ? azurerm_subnet.endpoint-subnet.0.name : var.subnet_id
virtual_network_name = data.azurerm_virtual_network.data-endpoint-network.name
resource_group_name = data.azurerm_resource_group.data-endpoint-resource-group.name
}
resource "azurerm_public_ip" "endpoint-static-ip" {
name = local.endpoint_ip_name
location = var.region
resource_group_name = data.azurerm_resource_group.data-endpoint-resource-group.name
allocation_method = "Static"
tags = {
Name = local.endpoint_ip_name
"${local.additional_tag[0]}" = local.additional_tag[1]
"${var.tag_resource_id}" = "${var.service_base_name}:${local.endpoint_ip_name}"
"${var.service_base_name}-tag" = local.endpoint_ip_name
}
}
resource "azurerm_network_interface" "endpoint-nif" {
name = local.endpoint_nif_name
location = data.azurerm_resource_group.data-endpoint-resource-group.location
resource_group_name = data.azurerm_resource_group.data-endpoint-resource-group.name
ip_configuration {
name = "configuration"
subnet_id = data.azurerm_subnet.data-endpoint-subnet.id
private_ip_address_allocation = "Dynamic"
public_ip_address_id = azurerm_public_ip.endpoint-static-ip.id
private_ip_address_version = "IPv4"
}
tags = {
Name = local.endpoint_nif_name
"${local.additional_tag[0]}" = local.additional_tag[1]
"${var.tag_resource_id}" = "${var.service_base_name}:${local.endpoint_nif_name}"
"${var.service_base_name}-tag" = local.endpoint_nif_name
}
}
resource "azurerm_network_interface_security_group_association" "endpoint-nif-sg" {
network_interface_id = azurerm_network_interface.endpoint-nif.id
network_security_group_id = azurerm_network_security_group.enpoint-sg.id
depends_on = [azurerm_virtual_machine.endpoint_instance]
}