Add Gandi DNS management via Pulumi #54
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/gandi-dns-pulumi"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
pulumi/tailscale/andpulumi/gandi/eblu.medomain*.ops.eblu.me→ indri's Tailscale IP (100.98.163.89)dns-up,dns-previewtailnet-upto pass--yesby defaultBackground
This enables using real DNS names (
*.ops.eblu.me) that resolve to Tailscale IPs,which allows containers and other systems to resolve services without depending on
MagicDNS. Since Tailscale IPs (100.x.x.x) are not publicly routable, services remain
tailnet-only while using standard DNS.
Deployment and Testing
cd pulumi/gandi && uv syncto install dependenciescd pulumi/gandi && pulumi stack init eblu-meto create stackmise run dns-previewto verify configurationmise run dns-upto apply DNS recordsdig +short test.ops.eblu.mereturns100.98.163.89🤖 Generated with Claude Code
@ -0,0 +3,4 @@blumeops-dns:domain: eblu.meblumeops-dns:subdomain: ops# indri's Tailscale IP - only routable within tailnetblumeops-dns:tailscale_ip: "100.98.163.89"Is there a way to have pulumi determine this ip dynamically at up-time? Even better; is there a way to set this so that it doesn't need to route to a static ip that might change from tailscale? Either way, instead of just calling it indri's tailscale ip, call it "indri (reverse proxy via caddy)'s Tailscale IP" to make it clear that we're only targeting indri because it hosts our reverse proxy.
@ -0,0 +4,4 @@## What It DoesCreates DNS records that point `*.ops.eblu.me` to indri's Tailscale IP (`100.98.163.89`).similarly here, make sure we call out that the reason we are targeting indri is because it's hosting a reverse proxy (caddy is the plan). The day may come where we host it on a different host.
@ -0,0 +31,4 @@2. Create a new PAT:- Name: `blumeops-pulumi` (or similar)- Expiration: 30 days (maximum)- Permissions: **Manage domain name technical configurations** (under Domains)I've also enabled the following:
(If any of those were a mistake to include for security reasons feel free to remove them from this README)
@ -0,0 +82,4 @@## Changing the Target IPIf indri's Tailscale IP changes, update `Pulumi.eblu-me.yaml`:See the previous comment about maybe making this dynamic
@ -0,0 +17,4 @@config = pulumi.Config()domain = config.require("domain") # eblu.mesubdomain = config.require("subdomain") # opstailscale_ip = config.require("tailscale_ip") # 100.98.163.89See previous comments about maybe making this dynamic