134 lines
No EOL
3.9 KiB
HCL
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
|
|
}
|
|
} |