Files
Compose-Files/Terraform/netbird-reverse-proxy-service/files/main.tf
T
2026-07-20 09:23:17 -04:00

146 lines
4.1 KiB
Terraform

<%- if domain_mode == "free" %>
data "netbird_reverse_proxy_domain" "free" {
type = "free"
}
<%- endif %>
<%- if domain_mode == "custom" %>
data "netbird_reverse_proxy_domain" "custom" {
domain = "<< custom_domain >>"
validated = true
}
<%- endif %>
<%- if target_type == "peer" %>
data "netbird_peer" "target_peer" {
name = "<< target_peer_name >>"
}
<%- endif %>
<%- if target_type == "host" %>
data "netbird_network" "target_network" {
name = "<< target_network_name >>"
}
data "netbird_network_resource" "target_resource" {
network_id = data.netbird_network.target_network.id
name = "<< target_host_name >>"
}
<%- endif %>
<%- if target_type == "domain" %>
data "netbird_network" "target_network" {
name = "<< target_network_name >>"
}
data "netbird_network_resource" "target_resource" {
network_id = data.netbird_network.target_network.id
name = "<< target_domain_name >>"
}
<%- endif %>
<%- if target_type == "subnet" %>
data "netbird_network" "target_network" {
name = "<< target_network_name >>"
}
data "netbird_network_resource" "target_resource" {
network_id = data.netbird_network.target_network.id
name = "<< target_subnet_name >>"
}
<%- endif %>
<%- if target_type != "peer" %>
locals {
reverse_proxy_target_resource_type = can(cidrnetmask(data.netbird_network_resource.target_resource.address)) ? "subnet" : (length(regexall(":", data.netbird_network_resource.target_resource.address)) > 0 ? "host" : (length(regexall("[A-Za-z*]", data.netbird_network_resource.target_resource.address)) > 0 ? "domain" : "host"))
}
<%- endif %>
<%- if bearer_distribution_group_names %>
locals {
reverse_proxy_bearer_group_names = [
for name in split(",", "<< bearer_distribution_group_names >>") : trimspace(name)
if trimspace(name) != ""
]
}
data "netbird_group" "bearer_distribution_groups" {
for_each = toset(local.reverse_proxy_bearer_group_names)
name = each.value
}
<%- endif %>
resource "netbird_reverse_proxy_service" "reverse_proxy_service" {
name = "<< service_name >>"
<%- if domain_mode == "free" %>
domain = data.netbird_reverse_proxy_domain.free.domain
<%- endif %>
<%- if domain_mode == "custom" %>
domain = data.netbird_reverse_proxy_domain.custom.domain
<%- endif %>
enabled = << service_enabled | lower >>
pass_host_header = << pass_host_header | lower >>
rewrite_redirects = << rewrite_redirects | lower >>
targets = [{
<%- if target_type == "peer" %>
target_id = data.netbird_peer.target_peer.id
<%- endif %>
<%- if target_type == "host" %>
target_id = data.netbird_network_resource.target_resource.id
<%- endif %>
<%- if target_type == "domain" %>
target_id = data.netbird_network_resource.target_resource.id
<%- endif %>
<%- if target_type == "subnet" %>
target_id = data.netbird_network_resource.target_resource.id
<%- endif %>
<%- if target_type == "peer" %>
target_type = "peer"
<%- endif %>
<%- if target_type != "peer" %>
target_type = local.reverse_proxy_target_resource_type
<%- endif %>
port = << target_port >>
protocol = "<< target_protocol >>"
enabled = << target_enabled | lower >>
<%- if target_host %>
host = "<< target_host >>"
<%- endif %>
<%- if not target_host and target_type != "peer" %>
host = local.reverse_proxy_target_resource_type == "subnet" ? split("/", data.netbird_network_resource.target_resource.address)[0] : null
<%- endif %>
<%- if target_path %>
path = "<< target_path >>"
<%- endif %>
}]
auth = {
<%- if auth_mode == "link" %>
link_auth = {
enabled = true
}
<%- endif %>
<%- if auth_mode == "password" %>
password_auth = {
enabled = true
password = "<< auth_password >>"
}
<%- endif %>
<%- if auth_mode == "pin" %>
pin_auth = {
enabled = true
pin = "<< auth_pin >>"
}
<%- endif %>
<%- if auth_mode == "bearer" %>
bearer_auth = {
enabled = true
<%- if bearer_distribution_group_names %>
distribution_groups = [for name in local.reverse_proxy_bearer_group_names : data.netbird_group.bearer_distribution_groups[name].id]
<%- endif %>
}
<%- endif %>
}
}