terraform-modules/example/main.tf
2025-07-16 15:28:03 +02:00

134 lines
No EOL
3.9 KiB
HCL

resource "stackit_network_area" "project_sna" {
organization_id = var.organization_id
name = var.SNA_name
network_ranges = var.SNA_network_ranges
transfer_network = var.SNA_transfer_network
}
module "projects" {
source = "../project"
projects = var.Projects_map
organization_id = var.organization_id
sna_id = stackit_network_area.project_sna.network_area_id
labels = var.labels != null ? var.labels : {}
}
locals {
project_ids = { for k, v in module.projects.created_projects : k => v.project_id }
}
module "stackit_ske_cluster" {
source = "../ske"
for_each = var.ske_clusters
project_id = local.project_ids[each.value.project_key]
name = each.value.name
node_pools = each.value.node_pools
network = {
id = each.value.network_id
}
kubernetes_version_min = lookup(each.value, "kubernetes_version_min", null)
hibernations = lookup(each.value, "hibernations", null)
maintenance = lookup(each.value, "maintenance", null)
extensions = lookup(each.value, "extensions", null)
default_region = var.default_region
}
module "security_groups" {
source = "../security-group"
for_each = var.security_groups
project_id = local.project_ids[each.value.project_key]
name = each.value.name
description = each.value.description != null ? each.value.description : ""
rules = each.value.rules
}
locals {
security_group_ids_by_name = {
for key, m in module.security_groups :
m.name => m.security_group_id
}
}
module "net" {
depends_on = [module.security_groups]
source = "../network"
for_each = var.networks
project_id = local.project_ids[each.value.project_key]
name = each.value.name
ipv4_gateway = each.value.ipv4_gateway
ipv4_nameservers = each.value.ipv4_nameservers
ipv4_prefix = each.value.ipv4_prefix
ipv4_prefix_length = each.value.ipv4_prefix_length
ipv6_gateway = each.value.ipv6_gateway
ipv6_nameservers = each.value.ipv6_nameservers
ipv6_prefix = each.value.ipv6_prefix
ipv6_prefix_length = each.value.ipv6_prefix_length
no_ipv4_gateway = each.value.no_ipv4_gateway
no_ipv6_gateway = each.value.no_ipv6_gateway
routed = each.value.routed
labels = each.value.labels
nics = each.value.nics
security_group_ids_by_name = local.security_group_ids_by_name
}
module "postgres" {
source = "../postgres"
for_each = var.postgres_instances
project_id = local.project_ids[each.value.project_key]
name = each.value.name
ver = each.value.version
flavor = each.value.flavor
storage = each.value.storage
replicas = each.value.replicas
acl = each.value.acl
backup_schedule = each.value.backup_schedule
users = each.value.users
databases = each.value.databases
}
module "observability" {
source = "../observability"
for_each = var.observability_instances
project_id = local.project_ids[each.value.project_key]
name = each.value.name
plan_name = each.value.plan_name
acl = each.value.acl
metrics_retention_days = each.value.metrics_retention_days
metrics_retention_days_5m_downsampling = each.value.metrics_retention_days_5m_downsampling
metrics_retention_days_1h_downsampling = each.value.metrics_retention_days_1h_downsampling
alert_config = each.value.alert_config
parameters = each.value.parameters
# Credentials
create_credentials = each.value.create_credentials
credentials_count = each.value.credentials_count
alertgroups = each.value.alertgroups
logalertgroups = each.value.logalertgroups
scrapeconfigs = each.value.scrapeconfigs
}
output "obs_url" {
value = {
for key, instance in module.observability :
key => instance.observability_urls
}
}