Skip to content

Bring the Route 53 hosted zones under Terraform - #189

Merged
ale210 merged 8 commits into
mainfrom
183-route53-zones-terraform
Aug 31, 2026
Merged

Bring the Route 53 hosted zones under Terraform#189
ale210 merged 8 commits into
mainfrom
183-route53-zones-terraform

Conversation

@ale210

@ale210 ale210 commented Aug 31, 2026

Copy link
Copy Markdown
Member

Closes #183.

Brings all seven Route 53 hosted zones in 035866691871 under Terraform, plus every record in them that was not already managed. Each zone is declared in its own project module's dns.tf, so the zone sits next to the things that use it.

Two project modules are new — projects/ballotnav and projects/311-data — and projects/access-the-data, which was an empty directory, is now populated and wired into main.tf. All three are DNS only; those projects have no compute in this account. Note module "311-data" is not a legal Terraform identifier, so the module is three-eleven-data while the directory keeps the project's name.

What the plan should look like

Not a zero-change plan. The bar is 0 to add, 0 to destroy, no replacements, with every change either the managed-by tag or one of the two deliberate changes below.

  • 29 imports: 7 zones and 22 records.
  • 7 zone tag changes — the provider's default_tags adds managed-by = terraform-incubator, which is exactly what the coverage report reads. Route 53 records are not taggable, so they show no tag change.
  • 2 deliberate record changes, called out so a reviewer knows they are intended:
    • www.311-data.org CNAME 311-data.org -> hackforla.github.io
    • homeunite.us A 18.223.160.58 -> alias to incubator-prod-lb

Every zone sets comment explicitly. The provider defaults that attribute to "Managed by Terraform", so omitting it on the five zones whose live comment is empty would plan a change against a live zone. Two zones already carry that string from the Terragrunt era and keep it.

All seven get lifecycle { prevent_destroy = true }. Destroying a hosted zone discards its delegation NS set, and a recreated zone gets different nameservers, so that outage cannot be undone from Terraform.

Fixes

  • www.311-data.org was broken over HTTPS. It CNAME'd to the apex, so requests arrived with SNI www.311-data.org against a certificate covering the apex only and TLS failed outright — plain HTTP worked, which is why it went unnoticed. Now points at hackforla.github.io, the same shape as www.ballotnav.org and www.civictechjobs.org, both of which redirect cleanly over HTTPS.
  • homeunite.us had a dead apex. It pointed at 18.223.160.58, a Terragrunt-era host that answers on neither port 80 nor 443 and holds no instance or Elastic IP in this account in any region. The apex is repointed at the load balancer and added to the prod service's additional_host_urls, so it reaches the application rather than the listener's default redirect.
  • civic-tech-index stage moved off a hostname that could never work. stage.api.civictechindex.org is three labels deep and the listener's certificate is *.civictechindex.org, a single-label wildcard, so TLS failed before any request was made. The service now uses api-stage.civictechindex.org, the spelling the certificate covers and which already worked.

Hardcoded zone ids

All four literals are replaced by references. Three resolve within their own module now that the zone lives there. The fourth is cross-project: peopledepot-dev.vrms.io sits in the vrms zone, so projects/vrms gains a zone_id output and projects/people-depot a vrms_zone_id variable, wired in main.tf. Two further literals in projects/vrms/environment-prod.tf are inside a commented-out block and were left alone.

Records deliberately not adopted

Six records serve nothing and are not declared here. Terraform only touches records it declares, so these are removed by hand rather than by this PR — script and pre-change captures are held outside the repo, and the deletions are independent of this apply.

Zone Record Why
civictechjobs.org _72ab….www.civictechjobs.org validation for a certificate that no longer exists
vrms.io prod.vrms.io no listener rule; only reached the default redirect
vrms.io *.vrms.io hand-created wildcard catch-all
homeunite.us dev.homeunite.us points at the dead 18.223.160.58
civictechindex.org stage.api.civictechindex.org TLS impossible, redundant with api-stage
civictechindex.org test.civictechindex.org no listener rule

Removing *.vrms.io is the one visible behaviour change: names under vrms.io with no explicit record will return NXDOMAIN instead of redirecting to www.hackforla.org. Every host named in a listener rule has its own record, so nothing in AWS depends on it.

Not in scope

The five ACM validation records are adopted as standalone aws_route53_record resources so that no record in a managed zone is left unmanaged. They are temporary owners: when the certificates come into Terraform they should move to a for_each over domain_validation_options and these resources be removed. Two orphaned certificates turned up while doing this — civictechjobs.org (issued, attached to nothing) and accessthedata.org (attached to the load balancer but referenced by no listener rule) — and both belong to that ACM work, not here.

NS and SOA apex records are Route 53's own and are deliberately not declared in any zone.

@github-actions

github-actions Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Terraform plan in terraform
With backend config files: terraform/prod.backend.tfvars

Plan: 32 to import, 0 to add, 11 to change, 0 to destroy.
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
!~  update in-place

Terraform will perform the following actions:

  # module.access-the-data.aws_route53_record.apex will be imported
    resource "aws_route53_record" "apex" {
        fqdn                             = "accessthedata.org"
        health_check_id                  = null
        id                               = "Z099349812ZUUFQEPL51Q_accessthedata.org_A"
        multivalue_answer_routing_policy = false
        name                             = "accessthedata.org"
        records                          = [
            "185.199.108.153",
            "185.199.109.153",
            "185.199.110.153",
            "185.199.111.153",
        ]
        set_identifier                   = null
        ttl                              = 3600
        type                             = "A"
        zone_id                          = "*********************"
    }

  # module.access-the-data.aws_route53_record.apex_ipv6 will be imported
    resource "aws_route53_record" "apex_ipv6" {
        fqdn                             = "accessthedata.org"
        health_check_id                  = null
        id                               = "Z099349812ZUUFQEPL51Q_accessthedata.org_AAAA"
        multivalue_answer_routing_policy = false
        name                             = "accessthedata.org"
        records                          = [
            "2606:50c0:8000::153",
            "2606:50c0:8001::153",
            "2606:50c0:8002::153",
            "2606:50c0:8003::153",
        ]
        set_identifier                   = null
        ttl                              = 3600
        type                             = "AAAA"
        zone_id                          = "*********************"
    }

  # module.access-the-data.aws_route53_record.cert_validation will be imported
    resource "aws_route53_record" "cert_validation" {
        fqdn                             = "_0cf1f0f2546b74cb244e41df3c73afe6.accessthedata.org"
        health_check_id                  = null
        id                               = "Z099349812ZUUFQEPL51Q__0cf1f0f2546b74cb244e41df3c73afe6.accessthedata.org_CNAME"
        multivalue_answer_routing_policy = false
        name                             = "_0cf1f0f2546b74cb244e41df3c73afe6.accessthedata.org"
        records                          = [
            "_f6e79d0bd5ddcd952dae00479b8d4a1c.cmqshkkvmc.acm-validations.aws.",
        ]
        set_identifier                   = null
        ttl                              = 60
        type                             = "CNAME"
        zone_id                          = "*********************"
    }

  # module.access-the-data.aws_route53_zone.this will be updated in-place
  # (imported from "Z099349812ZUUFQEPL51Q")
!~  resource "aws_route53_zone" "this" {
        arn                         = "arn:aws:route53:::hostedzone/Z099349812ZUUFQEPL51Q"
        comment                     = "Managed by Terraform"
        delegation_set_id           = null
        enable_accelerated_recovery = false
+       force_destroy               = false
        id                          = "Z099349812ZUUFQEPL51Q"
        name                        = "accessthedata.org"
        name_servers                = [
            "ns-1125.awsdns-12.org",
            "ns-1680.awsdns-18.co.uk",
            "ns-234.awsdns-29.com",
            "ns-876.awsdns-45.net",
        ]
        primary_name_server         = "ns-234.awsdns-29.com"
        tags                        = {}
!~      tags_all                    = {
+           "managed-by" = "terraform-incubator"
        }
        zone_id                     = "*********************"
    }

  # module.ballotnav.aws_route53_record.apex will be imported
    resource "aws_route53_record" "apex" {
        fqdn                             = "ballotnav.org"
        health_check_id                  = null
        id                               = "Z07523651NOVLWMBAS3IL_ballotnav.org_A"
        multivalue_answer_routing_policy = false
        name                             = "ballotnav.org"
        records                          = [
            "185.199.108.153",
            "185.199.109.153",
            "185.199.110.153",
            "185.199.111.153",
        ]
        set_identifier                   = null
        ttl                              = 300
        type                             = "A"
        zone_id                          = "*********************"
    }

  # module.ballotnav.aws_route53_record.pages["about"] will be imported
    resource "aws_route53_record" "pages" {
        fqdn                             = "about.ballotnav.org"
        health_check_id                  = null
        id                               = "Z07523651NOVLWMBAS3IL_about.ballotnav.org_CNAME"
        multivalue_answer_routing_policy = false
        name                             = "about.ballotnav.org"
        records                          = [
            "hackforla.github.io",
        ]
        set_identifier                   = null
        ttl                              = 300
        type                             = "CNAME"
        zone_id                          = "*********************"
    }

  # module.ballotnav.aws_route53_record.pages["admin"] will be imported
    resource "aws_route53_record" "pages" {
        fqdn                             = "admin.ballotnav.org"
        health_check_id                  = null
        id                               = "Z07523651NOVLWMBAS3IL_admin.ballotnav.org_CNAME"
        multivalue_answer_routing_policy = false
        name                             = "admin.ballotnav.org"
        records                          = [
            "hackforla.github.io",
        ]
        set_identifier                   = null
        ttl                              = 300
        type                             = "CNAME"
        zone_id                          = "*********************"
    }

  # module.ballotnav.aws_route53_record.pages["demo"] will be imported
    resource "aws_route53_record" "pages" {
        fqdn                             = "demo.ballotnav.org"
        health_check_id                  = null
        id                               = "Z07523651NOVLWMBAS3IL_demo.ballotnav.org_CNAME"
        multivalue_answer_routing_policy = false
        name                             = "demo.ballotnav.org"
        records                          = [
            "hackforla.github.io",
        ]
        set_identifier                   = null
        ttl                              = 300
        type                             = "CNAME"
        zone_id                          = "*********************"
    }

  # module.ballotnav.aws_route53_record.pages["www"] will be imported
    resource "aws_route53_record" "pages" {
        fqdn                             = "www.ballotnav.org"
        health_check_id                  = null
        id                               = "Z07523651NOVLWMBAS3IL_www.ballotnav.org_CNAME"
        multivalue_answer_routing_policy = false
        name                             = "www.ballotnav.org"
        records                          = [
            "hackforla.github.io",
        ]
        set_identifier                   = null
        ttl                              = 300
        type                             = "CNAME"
        zone_id                          = "*********************"
    }

  # module.ballotnav.aws_route53_zone.this will be updated in-place
  # (imported from "Z07523651NOVLWMBAS3IL")
!~  resource "aws_route53_zone" "this" {
        arn                         = "arn:aws:route53:::hostedzone/Z07523651NOVLWMBAS3IL"
        comment                     = null
        delegation_set_id           = null
        enable_accelerated_recovery = false
+       force_destroy               = false
        id                          = "Z07523651NOVLWMBAS3IL"
        name                        = "ballotnav.org"
        name_servers                = [
            "ns-1521.awsdns-62.org",
            "ns-1627.awsdns-11.co.uk",
            "ns-599.awsdns-10.net",
            "ns-62.awsdns-07.com",
        ]
        primary_name_server         = "ns-1521.awsdns-62.org"
        tags                        = {}
!~      tags_all                    = {
+           "managed-by" = "terraform-incubator"
        }
        zone_id                     = "*********************"
    }

  # module.civic-tech-index.aws_route53_record.apex will be imported
    resource "aws_route53_record" "apex" {
        fqdn                             = "civictechindex.org"
        health_check_id                  = null
        id                               = "Z06388811ED8NRSEUZU7A_civictechindex.org_A"
        multivalue_answer_routing_policy = false
        name                             = "civictechindex.org"
        records                          = []
        set_identifier                   = null
        ttl                              = 0
        type                             = "A"
        zone_id                          = "*********************"

        alias {
            evaluate_target_health = false
            name                   = "s3-website-us-west-2.amazonaws.com"
            zone_id                = "**************"
        }
    }

  # module.civic-tech-index.aws_route53_record.api will be imported
    resource "aws_route53_record" "api" {
        fqdn                             = "api.civictechindex.org"
        health_check_id                  = null
        id                               = "Z06388811ED8NRSEUZU7A_api.civictechindex.org_CNAME"
        multivalue_answer_routing_policy = false
        name                             = "api.civictechindex.org"
        records                          = [
            "incubator-prod-lb-569274394.us-west-2.elb.amazonaws.com",
        ]
        set_identifier                   = null
        ttl                              = 300
        type                             = "CNAME"
        zone_id                          = "*********************"
    }

  # module.civic-tech-index.aws_route53_record.api_stage will be imported
    resource "aws_route53_record" "api_stage" {
        fqdn                             = "api-stage.civictechindex.org"
        health_check_id                  = null
        id                               = "Z06388811ED8NRSEUZU7A_api-stage.civictechindex.org_CNAME"
        multivalue_answer_routing_policy = false
        name                             = "api-stage.civictechindex.org"
        records                          = [
            "incubator-prod-lb-569274394.us-west-2.elb.amazonaws.com",
        ]
        set_identifier                   = null
        ttl                              = 300
        type                             = "CNAME"
        zone_id                          = "*********************"
    }

  # module.civic-tech-index.aws_route53_record.cert_validation will be imported
    resource "aws_route53_record" "cert_validation" {
        fqdn                             = "_9aed66007870880679080f7176758008.civictechindex.org"
        health_check_id                  = null
        id                               = "Z06388811ED8NRSEUZU7A__9aed66007870880679080f7176758008.civictechindex.org_CNAME"
        multivalue_answer_routing_policy = false
        name                             = "_9aed66007870880679080f7176758008.civictechindex.org"
        records                          = [
            "_5f8c553c390792dc338365781f5ccc8e.zzxlnyslwt.acm-validations.aws.",
        ]
        set_identifier                   = null
        ttl                              = 300
        type                             = "CNAME"
        zone_id                          = "*********************"
    }

  # module.civic-tech-index.aws_route53_zone.this will be updated in-place
  # (imported from "Z06388811ED8NRSEUZU7A")
!~  resource "aws_route53_zone" "this" {
        arn                         = "arn:aws:route53:::hostedzone/Z06388811ED8NRSEUZU7A"
        comment                     = null
        delegation_set_id           = null
        enable_accelerated_recovery = false
+       force_destroy               = false
        id                          = "Z06388811ED8NRSEUZU7A"
        name                        = "civictechindex.org"
        name_servers                = [
            "ns-1159.awsdns-16.org",
            "ns-1990.awsdns-56.co.uk",
            "ns-412.awsdns-51.com",
            "ns-972.awsdns-57.net",
        ]
        primary_name_server         = "ns-1990.awsdns-56.co.uk"
        tags                        = {}
!~      tags_all                    = {
+           "managed-by" = "terraform-incubator"
        }
        zone_id                     = "*********************"
    }

  # module.civic-tech-jobs.aws_route53_record.apex will be imported
    resource "aws_route53_record" "apex" {
        fqdn                             = "civictechjobs.org"
        health_check_id                  = null
        id                               = "Z06949943QJY32WRKG577_civictechjobs.org_A"
        multivalue_answer_routing_policy = false
        name                             = "civictechjobs.org"
        records                          = [
            "185.199.108.153",
            "185.199.109.153",
            "185.199.110.153",
            "185.199.111.153",
        ]
        set_identifier                   = null
        ttl                              = 300
        type                             = "A"
        zone_id                          = "*********************"
    }

  # module.civic-tech-jobs.aws_route53_record.cert_validation_apex will be imported
    resource "aws_route53_record" "cert_validation_apex" {
        fqdn                             = "_a57d306f01d9b44fbca0d00a608ea608.civictechjobs.org"
        health_check_id                  = null
        id                               = "Z06949943QJY32WRKG577__a57d306f01d9b44fbca0d00a608ea608.civictechjobs.org_CNAME"
        multivalue_answer_routing_policy = false
        name                             = "_a57d306f01d9b44fbca0d00a608ea608.civictechjobs.org"
        records                          = [
            "_bfd3a50aa6f2f2dec50d28873885838d.tctzzymbbs.acm-validations.aws.",
        ]
        set_identifier                   = null
        ttl                              = 300
        type                             = "CNAME"
        zone_id                          = "*********************"
    }

  # module.civic-tech-jobs.aws_route53_record.cert_validation_stage will be imported
    resource "aws_route53_record" "cert_validation_stage" {
        fqdn                             = "_1ca49dd660678abe9478619c13875864.stage.civictechjobs.org"
        health_check_id                  = null
        id                               = "Z06949943QJY32WRKG577__1ca49dd660678abe9478619c13875864.stage.civictechjobs.org_CNAME"
        multivalue_answer_routing_policy = false
        name                             = "_1ca49dd660678abe9478619c13875864.stage.civictechjobs.org"
        records                          = [
            "_aaf9335595c8bd7c846a550221d3b3e4.tctzzymbbs.acm-validations.aws",
        ]
        set_identifier                   = null
        ttl                              = 300
        type                             = "CNAME"
        zone_id                          = "*********************"
    }

  # module.civic-tech-jobs.aws_route53_record.www will be imported
    resource "aws_route53_record" "www" {
        fqdn                             = "www.civictechjobs.org"
        health_check_id                  = null
        id                               = "Z06949943QJY32WRKG577_www.civictechjobs.org_CNAME"
        multivalue_answer_routing_policy = false
        name                             = "www.civictechjobs.org"
        records                          = [
            "hackforla.github.io",
        ]
        set_identifier                   = null
        ttl                              = 300
        type                             = "CNAME"
        zone_id                          = "*********************"
    }

  # module.civic-tech-jobs.aws_route53_zone.this will be updated in-place
  # (imported from "Z06949943QJY32WRKG577")
!~  resource "aws_route53_zone" "this" {
        arn                         = "arn:aws:route53:::hostedzone/Z06949943QJY32WRKG577"
        comment                     = null
        delegation_set_id           = null
        enable_accelerated_recovery = false
+       force_destroy               = false
        id                          = "Z06949943QJY32WRKG577"
        name                        = "civictechjobs.org"
        name_servers                = [
            "ns-1465.awsdns-55.org",
            "ns-1796.awsdns-32.co.uk",
            "ns-422.awsdns-52.com",
            "ns-970.awsdns-57.net",
        ]
        primary_name_server         = "ns-422.awsdns-52.com"
        tags                        = {}
!~      tags_all                    = {
+           "managed-by" = "terraform-incubator"
        }
        zone_id                     = "*********************"
    }

  # module.home-unite-us.aws_route53_record.apex will be updated in-place
  # (imported from "Z03829196Z0VAL9Q8CZ_homeunite.us_A")
!~  resource "aws_route53_record" "apex" {
        fqdn                             = "homeunite.us"
        health_check_id                  = null
        id                               = "Z03829196Z0VAL9Q8CZ_homeunite.us_A"
        multivalue_answer_routing_policy = false
        name                             = "homeunite.us"
!~      records                          = [
-           "18.223.160.58",
        ]
        set_identifier                   = null
-       ttl                              = 300 -> null
        type                             = "A"
        zone_id                          = "*******************"

+       alias {
+           evaluate_target_health = false
+           name                   = "incubator-prod-lb-569274394.us-west-2.elb.amazonaws.com"
+           zone_id                = "*************"
        }
    }

  # module.home-unite-us.aws_route53_record.cert_validation will be imported
    resource "aws_route53_record" "cert_validation" {
        fqdn                             = "_5bb55cc568d53bab04232d9f9e534189.homeunite.us"
        health_check_id                  = null
        id                               = "Z03829196Z0VAL9Q8CZ__5bb55cc568d53bab04232d9f9e534189.homeunite.us_CNAME"
        multivalue_answer_routing_policy = false
        name                             = "_5bb55cc568d53bab04232d9f9e534189.homeunite.us"
        records                          = [
            "_b364adf29acc28331d5a45a7c9a40fad.fsdcfjjflr.acm-validations.aws.",
        ]
        set_identifier                   = null
        ttl                              = 60
        type                             = "CNAME"
        zone_id                          = "*******************"
    }

  # module.home-unite-us.aws_route53_record.qa will be imported
    resource "aws_route53_record" "qa" {
        fqdn                             = "qa.homeunite.us"
        health_check_id                  = null
        id                               = "Z03829196Z0VAL9Q8CZ_qa.homeunite.us_CNAME"
        multivalue_answer_routing_policy = false
        name                             = "qa.homeunite.us"
        records                          = [
            "incubator-prod-lb-569274394.us-west-2.elb.amazonaws.com",
        ]
        set_identifier                   = null
        ttl                              = 300
        type                             = "CNAME"
        zone_id                          = "*******************"
    }

  # module.home-unite-us.aws_route53_record.www will be imported
    resource "aws_route53_record" "www" {
        fqdn                             = "www.homeunite.us"
        health_check_id                  = null
        id                               = "Z03829196Z0VAL9Q8CZ_www.homeunite.us_CNAME"
        multivalue_answer_routing_policy = false
        name                             = "www.homeunite.us"
        records                          = [
            "incubator-prod-lb-569274394.us-west-2.elb.amazonaws.com",
        ]
        set_identifier                   = null
        ttl                              = 300
        type                             = "CNAME"
        zone_id                          = "*******************"
    }

  # module.home-unite-us.aws_route53_zone.this will be updated in-place
  # (imported from "Z03829196Z0VAL9Q8CZ")
!~  resource "aws_route53_zone" "this" {
        arn                         = "arn:aws:route53:::hostedzone/Z03829196Z0VAL9Q8CZ"
        comment                     = "Managed by Terraform"
        delegation_set_id           = null
        enable_accelerated_recovery = false
+       force_destroy               = false
        id                          = "Z03829196Z0VAL9Q8CZ"
        name                        = "homeunite.us"
        name_servers                = [
            "ns-1209.awsdns-23.org",
            "ns-1686.awsdns-18.co.uk",
            "ns-212.awsdns-26.com",
            "ns-820.awsdns-38.net",
        ]
        primary_name_server         = "ns-1686.awsdns-18.co.uk"
        tags                        = {}
!~      tags_all                    = {
+           "managed-by" = "terraform-incubator"
        }
        zone_id                     = "*******************"
    }

  # module.three-eleven-data.aws_route53_record.apex will be imported
    resource "aws_route53_record" "apex" {
        fqdn                             = "311-data.org"
        health_check_id                  = null
        id                               = "Z10404141P7IPBA313E5M_311-data.org_A"
        multivalue_answer_routing_policy = false
        name                             = "311-data.org"
        records                          = [
            "185.199.108.153",
            "185.199.109.153",
            "185.199.110.153",
            "185.199.111.153",
        ]
        set_identifier                   = null
        ttl                              = 300
        type                             = "A"
        zone_id                          = "*********************"
    }

  # module.three-eleven-data.aws_route53_record.www will be updated in-place
  # (imported from "Z10404141P7IPBA313E5M_www.311-data.org_CNAME")
!~  resource "aws_route53_record" "www" {
        fqdn                             = "www.311-data.org"
        health_check_id                  = null
        id                               = "Z10404141P7IPBA313E5M_www.311-data.org_CNAME"
        multivalue_answer_routing_policy = false
        name                             = "www.311-data.org"
!~      records                          = [
-           "311-data.org",
+           "hackforla.github.io",
        ]
        set_identifier                   = null
        ttl                              = 300
        type                             = "CNAME"
        zone_id                          = "*********************"
    }

  # module.three-eleven-data.aws_route53_zone.this will be updated in-place
  # (imported from "Z10404141P7IPBA313E5M")
!~  resource "aws_route53_zone" "this" {
        arn                         = "arn:aws:route53:::hostedzone/Z10404141P7IPBA313E5M"
        comment                     = null
        delegation_set_id           = null
        enable_accelerated_recovery = false
+       force_destroy               = false
        id                          = "Z10404141P7IPBA313E5M"
        name                        = "311-data.org"
        name_servers                = [
            "ns-1157.awsdns-16.org",
            "ns-1549.awsdns-01.co.uk",
            "ns-473.awsdns-59.com",
            "ns-982.awsdns-58.net",
        ]
        primary_name_server         = "ns-1549.awsdns-01.co.uk"
        tags                        = {}
!~      tags_all                    = {
+           "managed-by" = "terraform-incubator"
        }
        zone_id                     = "*********************"
    }

  # module.vrms.aws_route53_record.apex will be imported
    resource "aws_route53_record" "apex" {
        fqdn                             = "vrms.io"
        health_check_id                  = null
        id                               = "Z0420800PGQ9JP6DM9EX_vrms.io_A"
        multivalue_answer_routing_policy = false
        name                             = "vrms.io"
        records                          = []
        set_identifier                   = null
        ttl                              = 0
        type                             = "A"
        zone_id                          = "********************"

        alias {
            evaluate_target_health = false
            name                   = "incubator-prod-lb-569274394.us-west-2.elb.amazonaws.com"
            zone_id                = "*************"
        }
    }

  # module.vrms.aws_route53_record.cert_validation will be imported
    resource "aws_route53_record" "cert_validation" {
        fqdn                             = "_ae6574e1afa9e171d1634c7d7df55699.vrms.io"
        health_check_id                  = null
        id                               = "Z0420800PGQ9JP6DM9EX__ae6574e1afa9e171d1634c7d7df55699.vrms.io_CNAME"
        multivalue_answer_routing_policy = false
        name                             = "_ae6574e1afa9e171d1634c7d7df55699.vrms.io"
        records                          = [
            "_75a716975d76b9c6a4e2d61c0b489e29.bwlshdtstt.acm-validations.aws.",
        ]
        set_identifier                   = null
        ttl                              = 300
        type                             = "CNAME"
        zone_id                          = "********************"
    }

  # module.vrms.aws_route53_record.www will be imported
    resource "aws_route53_record" "www" {
        fqdn                             = "www.vrms.io"
        health_check_id                  = null
        id                               = "Z0420800PGQ9JP6DM9EX_www.vrms.io_CNAME"
        multivalue_answer_routing_policy = false
        name                             = "www.vrms.io"
        records                          = [
            "incubator-prod-lb-569274394.us-west-2.elb.amazonaws.com",
        ]
        set_identifier                   = null
        ttl                              = 300
        type                             = "CNAME"
        zone_id                          = "********************"
    }

  # module.vrms.aws_route53_zone.this will be updated in-place
  # (imported from "Z0420800PGQ9JP6DM9EX")
!~  resource "aws_route53_zone" "this" {
        arn                         = "arn:aws:route53:::hostedzone/Z0420800PGQ9JP6DM9EX"
        comment                     = null
        delegation_set_id           = null
        enable_accelerated_recovery = false
+       force_destroy               = false
        id                          = "Z0420800PGQ9JP6DM9EX"
        name                        = "vrms.io"
        name_servers                = [
            "ns-1177.awsdns-19.org",
            "ns-185.awsdns-23.com",
            "ns-1937.awsdns-50.co.uk",
            "ns-620.awsdns-13.net",
        ]
        primary_name_server         = "ns-1937.awsdns-50.co.uk"
        tags                        = {}
!~      tags_all                    = {
+           "managed-by" = "terraform-incubator"
        }
        zone_id                     = "********************"
    }

  # module.civic-tech-index.module.backend_stage_service.aws_lb_listener_rule.static will be updated in-place
!~  resource "aws_lb_listener_rule" "static" {
        id           = "arn:aws:elasticloadbalancing:us-west-2:035866691871:listener-rule/app/incubator-prod-lb/7451adf77133ef36/390a225766a4daf3/6c6bd28e830d0f4a"
        tags         = {}
#        (5 unchanged attributes hidden)

-       condition {
-           host_header {
-               regex_values = [] -> null
-               values       = [
-                   "api-stage.civictechindex.org",
-                   "stage.api.civictechindex.org",
                ] -> null
            }
        }
+       condition {
+           host_header {
+               regex_values = []
+               values       = [
+                   "api-stage.civictechindex.org",
                ]
            }
        }

#        (2 unchanged blocks hidden)
    }

  # module.home-unite-us.module.prod_service.aws_lb_listener_rule.static will be updated in-place
!~  resource "aws_lb_listener_rule" "static" {
        id           = "arn:aws:elasticloadbalancing:us-west-2:035866691871:listener-rule/app/incubator-prod-lb/7451adf77133ef36/390a225766a4daf3/20413b899ccb8d07"
        tags         = {}
#        (5 unchanged attributes hidden)

-       condition {
-           host_header {
-               regex_values = [] -> null
-               values       = [
-                   "qa.homeunite.us",
-                   "www.homeunite.us",
                ] -> null
            }
        }
+       condition {
+           host_header {
+               regex_values = []
+               values       = [
+                   "homeunite.us",
+                   "qa.homeunite.us",
+                   "www.homeunite.us",
                ]
            }
        }

#        (2 unchanged blocks hidden)
    }

Plan: 32 to import, 0 to add, 11 to change, 0 to destroy.

✅ Plan applied in Terraform apply (OIDC) #71

@ale210
ale210 merged commit d0159bb into main Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bring the Route 53 hosted zones under Terraform

1 participant