Skip to content
This repository was archived by the owner on Feb 15, 2022. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 79 additions & 0 deletions cluster/azure/afd/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
data "azurerm_resource_group" "cluster" {
name = var.resource_group_name
}

resource "azurerm_frontdoor" "afd" {
name = var.front_door_name
resource_group_name = data.azurerm_resource_group.cluster.name
enforce_backend_pools_certificate_name_check = false

dynamic "routing_rule" {
for_each = [for rr in var.routing_rules : {
name = rr.routing_rule_name
patterns_to_match = rr.patterns_to_match
forwarding_protocol = rr.forwarding_protocol
backend_pool_name = rr.backend_pool_name
}]

content {
name = routing_rule.value.name
accepted_protocols = ["Http", "Https"]
patterns_to_match = routing_rule.value.patterns_to_match
frontend_endpoints = ["${var.frontend_endpoint}"]
forwarding_configuration {
forwarding_protocol = routing_rule.value.forwarding_protocol
backend_pool_name = routing_rule.value.backend_pool_name
}
}
}

backend_pool_load_balancing {
name = var.load_balancing_name
sample_size = var.sample_size
successful_samples_required = var.successful_samples_required
additional_latency_milliseconds = var.additional_latency_milliseconds
}

backend_pool_health_probe {
name = var.health_probe_name
path = var.path
interval_in_seconds = var.interval_in_seconds
}

dynamic "backend_pool" {
for_each = [for bp in var.backendpools : {
backend_pool_name = bp.backend_pool_name
backends = bp.backends
}]

content {
name = backend_pool.value.backend_pool_name
load_balancing_name = var.load_balancing_name
health_probe_name = var.health_probe_name

dynamic "backend" {
for_each = [for b in backend_pool.value.backends : {
address = b.address
priority = b.priority
weight = b.weight
}]
content {
host_header = backend.value.address
address = backend.value.address
http_port = 80
https_port = 443
priority = backend.value.priority
weight = backend.value.weight
enabled = true
}
}
}
}

frontend_endpoint {
name = var.frontend_endpoint
host_name = "${var.front_door_name}.azurefd.net"
custom_https_provisioning_enabled = false
}
}

50 changes: 50 additions & 0 deletions cluster/azure/afd/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
variable "resource_group_name" {
type = string
}

variable "front_door_name" {
type = string
}

variable "frontend_endpoint" {
type = string
}

variable "load_balancing_name" {
type = string
}

variable "sample_size" {
type = number
}

variable "successful_samples_required" {
type = number
}

variable "additional_latency_milliseconds" {
type = number
}

variable "health_probe_name" {
type = string
}

variable "backendpools" {
}

variable "routing_rules" {
}

variable "path" {
type = string
}

variable "interval_in_seconds" {
type = number
}

variable "patterns_to_match" {
type = list(string)
default = ["/*"]
}