29 lines
830 B
Terraform
29 lines
830 B
Terraform
# One Hetzner DNS zone per domain in var.zone_names. Hetzner becomes
|
|
# authoritative for these once the domain's registrar NS records are pointed at
|
|
# the nameservers in the `nameservers` output - that step happens at whichever
|
|
# registrar the domain was bought through, and can't be done from here.
|
|
resource "hcloud_zone" "this" {
|
|
for_each = toset(var.zone_names)
|
|
|
|
name = each.value
|
|
mode = "primary"
|
|
delete_protection = true # API-level guard, in addition to prevent_destroy below
|
|
|
|
lifecycle {
|
|
prevent_destroy = true
|
|
}
|
|
}
|
|
|
|
resource "hcloud_zone_rrset" "a" {
|
|
for_each = { for r in var.records : "${r.zone}/${r.name}" => r }
|
|
|
|
zone = hcloud_zone.this[each.value.zone].id
|
|
name = each.value.name
|
|
type = "A"
|
|
ttl = each.value.ttl
|
|
|
|
records = [
|
|
{ value = each.value.value }
|
|
]
|
|
}
|