Summary
Add a standardized dns_record output to all service modules, enabling automatic DNS record collection in environment configurations.
Parent Epic
Part of #255 - Consolidated DNS and TLS Architecture
Current State
- Some modules have
dns_record output but format varies
- Environment main.tf manually specifies DNS records
- No automatic collection from module outputs
Desired State
All service modules export a consistent dns_record output:
# modules/grafana/outputs.tf
output "dns_record" {
description = "DNS record for service discovery"
value = {
name = var.dns_name # "grafana"
type = "A"
value = incus_instance.grafana.ipv4_address
service = "grafana"
}
}
Environment collects records automatically:
# environments/iapetus/main.tf
locals {
service_dns_records = [
module.grafana01.dns_record,
module.prometheus01.dns_record,
module.loki01.dns_record,
module.atlantis01.dns_record,
module.step_ca01.dns_record,
]
}
module "coredns01" {
dns_records = local.service_dns_records
}
Modules to Update
iapetus services
cluster01 services
Shared
Standard Output Format
output "dns_record" {
description = "DNS record for service discovery zone"
value = {
name = var.dns_name != "" ? var.dns_name : var.instance_name
type = "A"
value = incus_instance.<service>.ipv4_address
service = "<service-name>"
}
}
New Variable (optional)
variable "dns_name" {
description = "DNS record name (without domain). Defaults to instance_name."
type = string
default = ""
}
Acceptance Criteria
Dependencies
None - can be implemented incrementally
Summary
Add a standardized
dns_recordoutput to all service modules, enabling automatic DNS record collection in environment configurations.Parent Epic
Part of #255 - Consolidated DNS and TLS Architecture
Current State
dns_recordoutput but format variesDesired State
All service modules export a consistent
dns_recordoutput:Environment collects records automatically:
Modules to Update
iapetus services
modules/grafana/outputs.tfmodules/prometheus/outputs.tfmodules/loki/outputs.tfmodules/atlantis/outputs.tfmodules/step-ca/outputs.tfmodules/caddy/outputs.tfmodules/cloudflared/outputs.tfcluster01 services
modules/alertmanager/outputs.tfmodules/mosquitto/outputs.tfmodules/forgejo/outputs.tfmodules/postgresql/outputs.tfmodules/alloy/outputs.tfShared
modules/coredns/outputs.tfStandard Output Format
New Variable (optional)
Acceptance Criteria
dns_recordoutputDependencies
None - can be implemented incrementally