Files
smom-dbis-138/terraform/multi-region.tf
defiQUG 1fb7266469 Add Oracle Aggregator and CCIP Integration
- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control.
- Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities.
- Created .gitmodules to include OpenZeppelin contracts as a submodule.
- Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment.
- Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks.
- Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring.
- Created scripts for resource import and usage validation across non-US regions.
- Added tests for CCIP error handling and integration to ensure robust functionality.
- Included various new files and directories for the orchestration portal and deployment scripts.
2025-12-12 14:57:48 -08:00

214 lines
8.1 KiB
HCL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Multi-Region Deployment Configuration (LEGACY)
#
# IMPORTANT:
# - This file captures earlier experiments with Dv2/Dsv6/DSv3 families and a
# small set of regions.
# - The **active, quota-safe 37-region Dplsv6 design** now lives in
# `multi-region-global.tf` and is controlled via `enable_multi_region = true`
# in `terraform.tfvars`.
# - This legacy path is gated by `enable_multi_region_legacy` and should
# normally remain **false**. Treat it as historical reference only; do not
# enable it in new deployments.
locals {
# Multi-region configuration with VM family selection per region
# References: local.cloud_provider and local.env_code from locals.tf
multi_region_config = {
westeurope = {
location = "westeurope"
region_code = "we"
# Available quotas: DSv3 (4), D Family (10), Dv2 (10), Dsv6 (10), Av2 (10)
vm_families = {
system = "Standard_D2_v2" # 2 vCPUs - Use Dv2 Family (10 available)
validators = "Standard_D4_v2" # 4 vCPUs - Use Dv2 Family (10 available)
sentries = "Standard_D4_v2" # 4 vCPUs - Use Dv2 Family (10 available)
rpc = "Standard_D8s_v6" # 8 vCPUs - Use Dsv6 Family (10 available)
}
node_count = {
system = 1 # 1 × 2 = 2 vCPUs (Dv2)
validators = 1 # 1 × 4 = 4 vCPUs (Dv2)
sentries = 1 # 1 × 4 = 4 vCPUs (Dv2)
rpc = 1 # 1 × 8 = 8 vCPUs (Dsv6)
}
# Total: 18 vCPUs (Dv2: 10, Dsv6: 8 - within quotas)
}
northeurope = {
location = "northeurope"
region_code = "ne"
# Available quotas: Dv2 (10), Dsv6 (10), Av2 (10), D Family (10)
vm_families = {
system = "Standard_D2_v2" # 2 vCPUs - Use Dv2 Family
validators = "Standard_D4_v2" # 4 vCPUs - Use Dv2 Family
sentries = "Standard_D4_v2" # 4 vCPUs - Use Dv2 Family
rpc = "Standard_D8s_v6" # 8 vCPUs - Use Dsv6 Family
}
node_count = {
system = 1 # 1 × 2 = 2 vCPUs
validators = 1 # 1 × 4 = 4 vCPUs
sentries = 1 # 1 × 4 = 4 vCPUs
rpc = 1 # 1 × 8 = 8 vCPUs
}
# Total: 18 vCPUs
}
francecentral = {
location = "francecentral"
region_code = "fc"
# Available quotas: Dv2 (10), Dsv6 (10), Av2 (10), D Family (10)
vm_families = {
system = "Standard_D2_v2" # 2 vCPUs - Use Dv2 Family
validators = "Standard_D4_v2" # 4 vCPUs - Use Dv2 Family
sentries = "Standard_D4_v2" # 4 vCPUs - Use Dv2 Family
rpc = "Standard_D8s_v6" # 8 vCPUs - Use Dsv6 Family
}
node_count = {
system = 1 # 1 × 2 = 2 vCPUs
validators = 1 # 1 × 4 = 4 vCPUs
sentries = 1 # 1 × 4 = 4 vCPUs
rpc = 1 # 1 × 8 = 8 vCPUs
}
# Total: 18 vCPUs
}
uksouth = {
location = "uksouth"
region_code = "uk"
# Available quotas: Dv2 (10), Dsv6 (10), Av2 (10), D Family (10)
vm_families = {
system = "Standard_D2_v2" # 2 vCPUs - Use Dv2 Family
validators = "Standard_D4_v2" # 4 vCPUs - Use Dv2 Family
sentries = "Standard_D4_v2" # 4 vCPUs - Use Dv2 Family
rpc = "Standard_D8s_v6" # 8 vCPUs - Use Dsv6 Family
}
node_count = {
system = 1 # 1 × 2 = 2 vCPUs (Dv2)
validators = 1 # 1 × 4 = 4 vCPUs (Dv2)
sentries = 1 # 1 × 4 = 4 vCPUs (Dv2)
rpc = 1 # 1 × 8 = 8 vCPUs (Dsv6)
}
# Total: 18 vCPUs (Dv2: 10, Dsv6: 8 - within quotas)
}
swedencentral = {
location = "swedencentral"
region_code = "sc"
# Available quotas: Dv2 (10), Dsv6 (10), Av2 (10), D Family (10)
vm_families = {
system = "Standard_D2_v2" # 2 vCPUs - Use Dv2 Family
validators = "Standard_D4_v2" # 4 vCPUs - Use Dv2 Family
sentries = "Standard_D4_v2" # 4 vCPUs - Use Dv2 Family
rpc = "Standard_D8s_v6" # 8 vCPUs - Use Dsv6 Family
}
node_count = {
system = 1 # 1 × 2 = 2 vCPUs (Dv2)
validators = 1 # 1 × 4 = 4 vCPUs (Dv2)
sentries = 1 # 1 × 4 = 4 vCPUs (Dv2)
rpc = 1 # 1 × 8 = 8 vCPUs (Dsv6)
}
# Total: 18 vCPUs (Dv2: 10, Dsv6: 8 - within quotas)
}
norwayeast = {
location = "norwayeast"
region_code = "no" # Using "no" to avoid conflict with northeurope "ne"
# Available quotas: Dv2 (10), Dsv6 (10), Av2 (10), D Family (10)
vm_families = {
system = "Standard_D2_v2" # 2 vCPUs - Use Dv2 Family
validators = "Standard_D4_v2" # 4 vCPUs - Use Dv2 Family
sentries = "Standard_D4_v2" # 4 vCPUs - Use Dv2 Family
rpc = "Standard_D8s_v6" # 8 vCPUs - Use Dsv6 Family
}
node_count = {
system = 1 # 1 × 2 = 2 vCPUs (Dv2)
validators = 1 # 1 × 4 = 4 vCPUs (Dv2)
sentries = 1 # 1 × 4 = 4 vCPUs (Dv2)
rpc = 1 # 1 × 8 = 8 vCPUs (Dsv6)
}
# Total: 18 vCPUs (Dv2: 10, Dsv6: 8 - within quotas)
}
}
}
# Multi-region resource groups (LEGACY)
resource "azurerm_resource_group" "multi_region" {
for_each = var.enable_multi_region_legacy ? local.multi_region_config : {}
name = "${local.cloud_provider}-${local.env_code}-${each.value.region_code}-rg-comp-001"
location = each.value.location
tags = merge(local.common_tags, {
Region = each.value.location
Deployment = "multi-region"
})
}
# Multi-region AKS clusters (LEGACY)
module "aks_multi_region" {
for_each = var.enable_multi_region_legacy ? local.multi_region_config : {}
source = "./modules/kubernetes"
resource_group_name = azurerm_resource_group.multi_region[each.key].name
location = each.value.location
cluster_name = "${local.cloud_provider}-${local.env_code}-${each.value.region_code}-aks-main"
kubernetes_version = var.kubernetes_version
node_count = each.value.node_count
vm_size = each.value.vm_families
environment = var.environment
tags = merge(local.common_tags, {
Region = each.value.location
Deployment = "multi-region"
})
# Use existing networking or create per-region
vnet_subnet_id = module.networking_multi_region[each.key].aks_subnet_id
node_subnet_id = module.networking_multi_region[each.key].node_subnet_id
# Shared Key Vault (or per-region)
key_vault_id = module.keyvault.key_vault_id
depends_on = [
azurerm_resource_group.multi_region,
module.networking_multi_region
]
}
# Multi-region networking (LEGACY)
module "networking_multi_region" {
for_each = var.enable_multi_region_legacy ? local.multi_region_config : {}
source = "./modules/networking"
resource_group_name = azurerm_resource_group.multi_region[each.key].name
location = each.value.location
cluster_name = "${local.cloud_provider}-${local.env_code}-${each.value.region_code}-aks-main"
environment = var.environment
tags = merge(local.common_tags, {
Region = each.value.location
Deployment = "multi-region"
})
}
# Multi-region storage (LEGACY)
module "storage_multi_region" {
for_each = var.enable_multi_region_legacy ? local.multi_region_config : {}
source = "./modules/storage"
resource_group_name = azurerm_resource_group.multi_region[each.key].name
location = each.value.location
cluster_name = "${local.cloud_provider}-${local.env_code}-${each.value.region_code}-aks-main"
environment = var.environment
tags = merge(local.common_tags, {
Region = each.value.location
Deployment = "multi-region"
})
}
# Outputs for multi-region deployment (LEGACY)
output "multi_region_clusters" {
value = var.enable_multi_region_legacy ? {
for k, v in module.aks_multi_region : k => {
cluster_name = v.cluster_name
cluster_fqdn = v.cluster_fqdn
location = local.multi_region_config[k].location
}
} : {}
description = "Multi-region AKS cluster information"
}