Skip to content

[MEIER-236] Add DNS records for meiermade.com and andrewmeier.dev redirects#77

Merged
benjimeierdev merged 3 commits intomainfrom
benji/meier-236
Mar 5, 2026
Merged

[MEIER-236] Add DNS records for meiermade.com and andrewmeier.dev redirects#77
benjimeierdev merged 3 commits intomainfrom
benji/meier-236

Conversation

@benjimeierdev
Copy link
Contributor

Problem

meiermade.com and andrewmeier.dev don't resolve — the redirect rulesets exist in redirect.ts but there are no DNS records for Cloudflare to proxy, so the redirects never fire.

Fix

Added proxied A records pointing to 192.0.2.1 (dummy IP) in record.ts so Cloudflare can intercept requests and apply the existing redirect rulesets:

  • andrewmeier.dev (root) → redirects to andymeier.dev (via existing ruleset)
  • meiermade.com (root) → redirects to andymeier.dev/services (via existing ruleset)
  • www.meiermade.com → redirects to andymeier.dev/services (via existing ruleset)

Files Changed

  • pulumi/src/cloudflare/record.ts — added DNS records for andrewmeier.dev, meiermade.com, and www.meiermade.com

Closes previous approach in platform-infrastructure#44.

…irects

Add proxied A records pointing to 192.0.2.1 (dummy IP) so Cloudflare can
intercept requests and apply the existing redirect rulesets:
- andrewmeier.dev root -> andymeier.dev
- meiermade.com root -> andymeier.dev/services
- www.meiermade.com -> andymeier.dev/services
@github-actions
Copy link

github-actions bot commented Mar 5, 2026

🍹 preview on andymeier/prod

Pulumi report

View in Pulumi Cloud

  Previewing update (prod)

View Live: https://app.pulumi.com/meiermade/andymeier/prod/previews/7248831b-d035-4714-aa9e-3920ea57dd0d

pulumi:pulumi:Stack: (same)
  [urn=urn:pulumi:prod::andymeier::pulumi:pulumi:Stack::andymeier-prod]
  + cloudflare:index/dnsRecord:DnsRecord: (create)
      [urn=urn:pulumi:prod::andymeier::cloudflare:index/dnsRecord:DnsRecord::andymeier-andrewmeier-root]
      content: "192.0.2.1"
      name   : "@"
      proxied: true
      ttl    : 1
      type   : "A"
      zoneId : "234a98f074ce1a656fdecaeee12fff19"
  + cloudflare:index/dnsRecord:DnsRecord: (create)
      [urn=urn:pulumi:prod::andymeier::cloudflare:index/dnsRecord:DnsRecord::andymeier-andrewmeier-www]
      content: "192.0.2.1"
      name   : "www"
      proxied: true
      ttl    : 1
      type   : "A"
      zoneId : "234a98f074ce1a656fdecaeee12fff19"
  ~ cloudflare:index/ruleset:Ruleset: (update)
      [id=c998e1e9dde241d7ba30609e282cd68c]
      [urn=urn:pulumi:prod::andymeier::cloudflare:index/ruleset:Ruleset::andymeier-andrewmeier-redirect]
    ~ rules: [
        ~ [0]: {
                  action          : "redirect"
                  actionParameters: {
                      fromValue: {
                          preserveQueryString: true
                          statusCode         : 301
                          targetUrl          : {
                              expression: "concat(\"https://andymeier.dev\", http.request.uri.path)"
                          }
                      }
                  }
                ~ description     : "Redirect andrewmeier.dev to andymeier.dev preserving path" => "Redirect andrewmeier.dev and www.andrewmeier.dev to andymeier.dev preserving path"
                  enabled         : true
                ~ expression      : "(http.host eq \"andrewmeier.dev\")" => "(http.host eq \"andrewmeier.dev\") or (http.host eq \"www.andrewmeier.dev\")"
                  ref             : "andrewmeier_to_andymeier"
              }
      ]
  + cloudflare:index/dnsRecord:DnsRecord: (create)
      [urn=urn:pulumi:prod::andymeier::cloudflare:index/dnsRecord:DnsRecord::andymeier-meiermade-www]
      content: "192.0.2.1"
      name   : "www"
      proxied: true
      ttl    : 1
      type   : "A"
      zoneId : "1d09a5f3c5efd0a617f98a9ac32abfc4"
  + cloudflare:index/dnsRecord:DnsRecord: (create)
      [urn=urn:pulumi:prod::andymeier::cloudflare:index/dnsRecord:DnsRecord::andymeier-meiermade-root]
      content: "192.0.2.1"
      name   : "@"
      proxied: true
      ttl    : 1
      type   : "A"
      zoneId : "1d09a5f3c5efd0a617f98a9ac32abfc4"
Resources:
  + 4 to create
  ~ 1 to update
  5 changes. 13 unchanged
  

Copy link
Collaborator

@andymeierdev andymeierdev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good overall — standard Cloudflare pattern for redirect-only domains. A few minor observations:

1. Duplicate zone lookupsandrewmeierZone and meiermadeZone are now looked up in both record.ts and redirect.ts. Could extract to a shared zones.ts, but not a functional issue since Pulumi deduplicates API calls. Fine to leave for now.

2. package-lock.json churn — 4 removed "peer": true lines look like an npm install side-effect rather than intentional. Harmless but worth a quick sanity check that it doesn't affect the build.

3. No www.andrewmeier.dev record — The redirect ruleset only matches http.host eq "andrewmeier.dev" so this is consistent, but if someone hits www.andrewmeier.dev it'll just fail to resolve. Probably fine since it's not a marketed domain, but worth a quick decision.

4. Pre-merge — Did you run pulumi preview? AGENTS.md requires it before PR to confirm the 3 new DNS records create cleanly.

Copy link
Contributor Author

@benjimeierdev benjimeierdev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the review! Addressing each point:

1. Duplicate zone lookups — Agreed, fine to leave for now. Can extract to a shared zones.ts in a follow-up if the file grows.

2. package-lock.json churn — Good catch, reverted in c2c1705. Was just an npm install side-effect from my local node version.

3. No www.andrewmeier.dev — Since the redirect ruleset only matches http.host eq "andrewmeier.dev", adding a DNS record without a matching rule wouldn't help. Leaving as-is since it's not a marketed domain. Happy to add both (DNS record + rule) if you'd like.

4. Pulumi preview — CI ran it successfully: 3 DNS records to create, no errors. I ran tsc --noEmit locally for type checking but didn't have Pulumi credentials for a local preview.

Copy link
Collaborator

@andymeierdev andymeierdev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we also add www.andrewmeier.dev record

Per review feedback, added:
- www.andrewmeier.dev proxied A record (192.0.2.1)
- Updated andrewmeier.dev redirect rule to also match www.andrewmeier.dev
@benjimeierdev benjimeierdev merged commit d9fc2cb into main Mar 5, 2026
2 checks passed
@benjimeierdev benjimeierdev deleted the benji/meier-236 branch March 5, 2026 16:18
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.

2 participants