Skip to content
Draft
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
41 changes: 41 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -137,3 +137,44 @@ domains-apply: domains-init

domains-destroy: domains-init
terraform -chdir=terraform/domains/environment_domains destroy -var-file config/${CONFIG}.tfvars.json ${AUTO_APPROVE}

# Test domains2 infrastructure
domains2-infra-vendor:
rm -rf terraform/domains/infrastructure_v2_test/vendor/modules/domains
git -c advice.detachedHead=false clone --depth=1 --single-branch --branch 1756-spike-domains-terraform-modules-enhancements https://github.com/DFE-Digital/terraform-modules.git terraform/domains/infrastructure_v2_test/vendor/modules/domains

domains2-infra-init: domains composed-variables domains2-infra-vendor set-azure-account
terraform -chdir=terraform/domains/infrastructure_v2_test init -upgrade -reconfigure \
-backend-config=resource_group_name=${RESOURCE_GROUP_NAME} \
-backend-config=storage_account_name=${STORAGE_ACCOUNT_NAME} \
-backend-config=key=domains2_infrastructure_test.tfstate

domains2-infra-plan: domains2-infra-init
terraform -chdir=terraform/domains/infrastructure_v2_test plan -var-file config/zones.tfvars.json

domains2-infra-apply: domains2-infra-init
terraform -chdir=terraform/domains/infrastructure_v2_test apply -var-file config/zones.tfvars.json ${AUTO_APPROVE}

# Test domains2 environment domains
domains2-env-vendor:
rm -rf terraform/domains/environment_domains_v2_test/vendor/modules/domains
git -c advice.detachedHead=false clone --depth=1 --single-branch --branch 1756-spike-domains-terraform-modules-enhancements https://github.com/DFE-Digital/terraform-modules.git terraform/domains/environment_domains_v2_test/vendor/modules/domains

domains2-env-init: domains composed-variables domains2-env-vendor set-azure-account
terraform -chdir=terraform/domains/environment_domains_v2_test init -upgrade -reconfigure \
-backend-config=resource_group_name=${RESOURCE_GROUP_NAME} \
-backend-config=storage_account_name=${STORAGE_ACCOUNT_NAME} \
-backend-config=key=domains2_environment_${ENVIRONMENT}_test.tfstate

domains2-env-plan: domains2-env-init
terraform -chdir=terraform/domains/environment_domains_v2_test plan -var-file config/${CONFIG}.tfvars.json

domains2-env-apply: domains2-env-init
terraform -chdir=terraform/domains/environment_domains_v2_test apply -var-file config/${CONFIG}.tfvars.json ${AUTO_APPROVE}

# Cleanup commands
domains2-env-destroy: domains2-env-init
terraform -chdir=terraform/domains/environment_domains_v2_test destroy -var-file config/${CONFIG}.tfvars.json ${AUTO_APPROVE}

domains2-infra-destroy: domains2-infra-init
terraform -chdir=terraform/domains/infrastructure_v2_test destroy -var-file config/zones.tfvars.json ${AUTO_APPROVE}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"environment": "production",
"domains": [
{
"name": "apex-production",
"zone": "technical-guidance.education.gov.uk",
"zone_resource_group": "s189p01-techg-dom-rg",
"environment": "production",
"origin_hostname": "technical-guidance-production.teacherservices.cloud",
"patterns_to_match": ["/*"],
"enable_caching": true,
"subdomain": null,
"health_probe_path": "/",
"health_probe_interval": 30,
"health_probe_timeout": 120
}
]
}
28 changes: 28 additions & 0 deletions terraform/domains/environment_domains_v2_test/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
module "domains" {
source = "./vendor/modules/domains//domains2/environment_domains_v2"

environment = var.environment
front_door_profile_name = "s189p01-techg-test-fd"
resource_group_name = "s189p01-techg-dom-rg"

endpoint_configuration = {
strategy = "per_environment" # Simple strategy for single zone
}

domains = var.domains

rate_limit_rules = var.rate_limit != null ? {
"global-limit" = {
domain = "technical-guidance.education.gov.uk"
duration_in_minutes = var.rate_limit.duration_in_minutes
threshold = var.rate_limit.threshold
action = var.rate_limit.action
}
} : {}

tags = {
Service = "TechnicalGuidance"
Environment = var.environment
Module = "domains2"
}
}
18 changes: 18 additions & 0 deletions terraform/domains/environment_domains_v2_test/terraform.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
terraform {
required_version = "= 1.6.4"

required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "3.116.0"
}
}
backend "azurerm" {
container_name = "terraform-state"
}
}

provider "azurerm" {
features {}
skip_provider_registration = true
}
30 changes: 30 additions & 0 deletions terraform/domains/environment_domains_v2_test/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
variable "environment" {
type = string
description = "Environment name"
}

variable "domains" {
type = list(object({
name = string
zone = string
zone_resource_group = string
environment = string
origin_hostname = string
patterns_to_match = list(string)
enable_caching = optional(bool, true)
subdomain = optional(string)
health_probe_path = optional(string, "/")
health_probe_interval = optional(number, 30)
health_probe_timeout = optional(number, 120)
}))
description = "List of domain configurations"
}

variable "rate_limit" {
type = object({
duration_in_minutes = number
threshold = number
action = string
})
default = null
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"hosted_zone": {
"technical-guidance.education.gov.uk": {
"caa_records": {},
"txt_records": {},
"resource_group_name": "s189p01-techg-dom-rg",
"front_door_name": "s189p01-techg-test-fd"
}
},
"deploy_default_records": false
}
24 changes: 24 additions & 0 deletions terraform/domains/infrastructure_v2_test/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
module "domains_infrastructure" {
source = "./vendor/modules/domains//domains2/infrastructure_v2"

front_door_name = "s189p01-techg-test-fd" # New name for testing
resource_group_name = "s189p01-techg-dom-rg"

hosted_zones = {
main = {
zone_name = "technical-guidance.education.gov.uk"
resource_group_name = "s189p01-techg-dom-rg"
deploy_default_records = false # Matching current config
caa_record_list = []
txt_records = {}
}
}

azure_enable_monitoring = false

tags = {
Service = "TechnicalGuidance"
Environment = "Test"
Module = "domains2"
}
}
18 changes: 18 additions & 0 deletions terraform/domains/infrastructure_v2_test/terraform.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
terraform {
required_version = "= 1.6.4"

required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "3.116.0"
}
}
backend "azurerm" {
container_name = "terraform-state"
}
}

provider "azurerm" {
features {}
skip_provider_registration = true
}
8 changes: 8 additions & 0 deletions terraform/domains/infrastructure_v2_test/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
variable "hosted_zone" {
type = map(any)
default = {}
}

variable "deploy_default_records" {
default = false
}