From 7baf1fb7db90b223b78aaa45b2538720de276b50 Mon Sep 17 00:00:00 2001 From: daisukei777 Date: Mon, 6 Jul 2020 09:35:59 +0900 Subject: [PATCH] Added an Azure Front Door creation script. --- cluster/azure/afd/main.tf | 79 ++++++++++++++++++++++++++++++++++ cluster/azure/afd/variables.tf | 50 +++++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 cluster/azure/afd/main.tf create mode 100644 cluster/azure/afd/variables.tf diff --git a/cluster/azure/afd/main.tf b/cluster/azure/afd/main.tf new file mode 100644 index 0000000..9995fae --- /dev/null +++ b/cluster/azure/afd/main.tf @@ -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 + } +} + diff --git a/cluster/azure/afd/variables.tf b/cluster/azure/afd/variables.tf new file mode 100644 index 0000000..4ed9281 --- /dev/null +++ b/cluster/azure/afd/variables.tf @@ -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 = ["/*"] +}