This commit is contained in:
Hrankin, Aleksandr (contracted)
2026-02-19 11:34:13 +00:00
commit f243f440c3
191 changed files with 6183 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
# ---------------------------
# Zones (many)
# ---------------------------
module "zones" {
for_each = var.zones
source = "../../modules/powerdns/zone"
zone_name = each.key
zone_kind = each.value.zone_kind
soa_edit_api = each.value.soa_edit_api
zone_nameservers = each.value.zone_nameservers
}
# ---------------------------
# Records (flatten -> many)
# ---------------------------
locals {
records_flat = merge([
for zone_name, z in var.zones : {
for rec_key, rec in z.records :
"${zone_name}::${rec_key}" => {
zone_name = zone_name
name = rec.name
type = rec.type
ttl = rec.ttl
records = rec.records
}
}
]...)
}
module "records" {
for_each = local.records_flat
source = "../../modules/powerdns/record"
zone_name = module.zones[each.value.zone_name].name
name = each.value.name
type = each.value.type
ttl = each.value.ttl
records = each.value.records
}

View File

@@ -0,0 +1,4 @@
provider "powerdns" {
server_url = var.pdns_server_url
api_key = var.pdns_api_key
}

View File

@@ -0,0 +1,23 @@
variable "pdns_server_url" {
type = string
}
variable "pdns_api_key" {
type = string
sensitive = true
}
variable "zones" {
type = map(object({
zone_kind = string
soa_edit_api = string
zone_nameservers = list(string)
records = map(object({
name = string
type = string
ttl = number
records = list(string)
}))
}))
}

View File

@@ -0,0 +1,10 @@
terraform {
required_version = ">= 1.3.0"
required_providers {
powerdns = {
source = "pan-net/powerdns"
# version = "1.5.0" # опционально: можно зафиксировать
}
}
}