Refactor A/AAAA blank content to dynamic Dynu semantics

This commit is contained in:
beatz174-bit
2026-04-29 09:13:54 +10:00
parent 0319ce65fd
commit 8727989db9
10 changed files with 402 additions and 97 deletions
+14 -4
View File
@@ -9,8 +9,8 @@ Using a single suffix (`test_suffix`), this example creates five DNS record scen
1. `A` record with IPv4 content (`codex-a-<suffix>.<root_domain>`)
2. `AAAA` record with IPv6 content (`codex-aaaa-<suffix>.<root_domain>`)
3. `CNAME` record (`codex-cname-<suffix>.<root_domain>`)
4. **Blank `A` record** with no content/IP (`codex-blank-a-<suffix>.<root_domain>`)
5. **Blank `AAAA` record** with no content/IP (`codex-blank-aaaa-<suffix>.<root_domain>`)
4. **Dynamic `A` record** with omitted content (`codex-dynamic-a-<suffix>.<root_domain>`)
5. **Dynamic `AAAA` record** with omitted content (`codex-dynamic-aaaa-<suffix>.<root_domain>`)
> [!WARNING]
> Do not use a suffix that overlaps important existing hostnames. This example is intended only for disposable test records that you can safely destroy.
@@ -52,5 +52,15 @@ terraform destroy
- `dynu_dns_record.a_ipv4`
- `dynu_dns_record.aaaa_ipv6`
- `dynu_dns_record.cname`
- `dynu_dns_record.blank_a`
- `dynu_dns_record.blank_aaaa`
- `dynu_dns_record.dynamic_a`
- `dynu_dns_record.dynamic_aaaa`
Verification commands:
```bash
dig A codex-dynamic-a-<suffix>.<root_domain>
dig AAAA codex-dynamic-aaaa-<suffix>.<root_domain>
dig CNAME codex-cname-<suffix>.<root_domain>
```
`dig <hostname>` defaults to an `A` lookup, which can be misleading for AAAA-only checks.
+8 -8
View File
@@ -9,8 +9,8 @@ locals {
hostname_a_ipv4 = "codex-a-${var.test_suffix}.${var.dynu_root_domain}"
hostname_aaaa_ipv6 = "codex-aaaa-${var.test_suffix}.${var.dynu_root_domain}"
hostname_cname = "codex-cname-${var.test_suffix}.${var.dynu_root_domain}"
hostname_blank_a = "codex-blank-a-${var.test_suffix}.${var.dynu_root_domain}"
hostname_blank_aaaa = "codex-blank-aaaa-${var.test_suffix}.${var.dynu_root_domain}"
hostname_dynamic_a = "codex-dynamic-a-${var.test_suffix}.${var.dynu_root_domain}"
hostname_dynamic_aaaa = "codex-dynamic-aaaa-${var.test_suffix}.${var.dynu_root_domain}"
}
resource "dynu_dns_record" "a_ipv4" {
@@ -37,17 +37,17 @@ resource "dynu_dns_record" "cname" {
state = true
}
# Deliberate blank A record scenario: A type with no content/IP value.
resource "dynu_dns_record" "blank_a" {
hostname = local.hostname_blank_a
# Deliberate dynamic A record scenario: content intentionally omitted for Dynu dynamic IPv4 behavior.
resource "dynu_dns_record" "dynamic_a" {
hostname = local.hostname_dynamic_a
record_type = "A"
ttl = var.test_ttl
state = true
}
# Deliberate blank AAAA record scenario: AAAA type with no content/IP value.
resource "dynu_dns_record" "blank_aaaa" {
hostname = local.hostname_blank_aaaa
# Deliberate dynamic AAAA record scenario: content intentionally omitted for Dynu dynamic IPv6 behavior.
resource "dynu_dns_record" "dynamic_aaaa" {
hostname = local.hostname_dynamic_aaaa
record_type = "AAAA"
ttl = var.test_ttl
state = true
+11 -11
View File
@@ -4,8 +4,8 @@ output "record_hostnames" {
a_ipv4 = dynu_dns_record.a_ipv4.hostname
aaaa_ipv6 = dynu_dns_record.aaaa_ipv6.hostname
cname = dynu_dns_record.cname.hostname
blank_a = dynu_dns_record.blank_a.hostname
blank_aaaa = dynu_dns_record.blank_aaaa.hostname
dynamic_a = dynu_dns_record.dynamic_a.hostname
dynamic_aaaa = dynu_dns_record.dynamic_aaaa.hostname
}
}
@@ -15,13 +15,13 @@ output "record_ids" {
a_ipv4 = dynu_dns_record.a_ipv4.id
aaaa_ipv6 = dynu_dns_record.aaaa_ipv6.id
cname = dynu_dns_record.cname.id
blank_a = dynu_dns_record.blank_a.id
blank_aaaa = dynu_dns_record.blank_aaaa.id
dynamic_a = dynu_dns_record.dynamic_a.id
dynamic_aaaa = dynu_dns_record.dynamic_aaaa.id
}
}
output "record_values" {
description = "Record type/content summary for each scenario; blank records intentionally omit content."
description = "Record type/content summary for each scenario; dynamic A/AAAA intentionally omit content."
value = {
a_ipv4 = {
type = dynu_dns_record.a_ipv4.record_type
@@ -35,13 +35,13 @@ output "record_values" {
type = dynu_dns_record.cname.record_type
content = dynu_dns_record.cname.content
}
blank_a = {
type = dynu_dns_record.blank_a.record_type
content = dynu_dns_record.blank_a.content
dynamic_a = {
type = dynu_dns_record.dynamic_a.record_type
content = dynu_dns_record.dynamic_a.content
}
blank_aaaa = {
type = dynu_dns_record.blank_aaaa.record_type
content = dynu_dns_record.blank_aaaa.content
dynamic_aaaa = {
type = dynu_dns_record.dynamic_aaaa.record_type
content = dynu_dns_record.dynamic_aaaa.content
}
}
}