Files
smom-dbis-138/terraform/multi-cloud/modules/azure-arc/main.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

115 lines
3.1 KiB
HCL

# Azure Arc Integration Module
# Onboards Kubernetes clusters from any provider to Azure Arc for unified management
locals {
# Resource group for Arc resources
resource_group_name = var.resource_group_name
location = var.location
}
# Resource Group for Arc resources
resource "azurerm_resource_group" "arc" {
name = local.resource_group_name
location = local.location
tags = var.tags
}
# Azure Arc Connected Kubernetes Cluster resources
# Note: Actual onboarding is done via az connectedk8s connect command
# This resource represents the Arc resource in Azure
resource "azapi_resource" "arc_clusters" {
for_each = var.clusters
type = "Microsoft.Kubernetes/connectedClusters@2023-11-01-preview"
name = "${each.key}-arc"
location = local.location
parent_id = azurerm_resource_group.arc.id
body = jsonencode({
properties = {
agentPublicKeyCertificate = "" # Populated during onboarding
distribution = each.value.provider == "aws" ? "EKS" : (
each.value.provider == "gcp" ? "GKE" : (
each.value.provider == "onprem" ? "AKS" : "AKS"
)
)
infrastructure = each.value.provider
kubernetesVersion = "" # Will be populated
totalNodeCount = 0 # Will be populated
}
})
tags = merge(var.tags, {
Provider = each.value.provider
Region = each.value.region
Cluster = each.value.name
})
}
# Azure Arc extensions (optional - for GitOps, monitoring, etc.)
resource "azapi_resource" "arc_gitops" {
for_each = {
for k, v in var.clusters : k => v
if var.enable_gitops
}
type = "Microsoft.KubernetesConfiguration/extensions@2022-11-01"
name = "arc-gitops-${each.key}"
parent_id = azapi_resource.arc_clusters[each.key].id
body = jsonencode({
properties = {
extensionType = "microsoft.flux"
autoUpgradeMinorVersion = true
releaseTrain = "Stable"
}
})
depends_on = [azapi_resource.arc_clusters]
}
# Output script for onboarding clusters
resource "local_file" "arc_onboarding_script" {
for_each = var.clusters
filename = "${path.module}/../../../../scripts/arc-onboard-${each.key}.sh"
content = <<-EOT
#!/bin/bash
# Azure Arc Onboarding Script for ${each.key}
# Cluster: ${each.value.name}
# Provider: ${each.value.provider}
# Region: ${each.value.region}
set -e
# Install Azure CLI extension for Arc
az extension add --name connectedk8s || az extension update --name connectedk8s
# Login to Azure (if not already)
# az login
# Set subscription
az account set --subscription "${var.azure_subscription_id}"
# Connect cluster to Azure Arc
az connectedk8s connect \
--name "${each.key}-arc" \
--resource-group "${local.resource_group_name}" \
--location "${local.location}" \
--kube-config "${each.value.kubeconfig}" \
--kube-context "" \
--tags \
Provider=${each.value.provider} \
Region=${each.value.region} \
Cluster=${each.value.name}
echo "Cluster ${each.key} onboarded to Azure Arc successfully!"
EOT
file_permission = "0755"
}