dns update with moving providers
This commit is contained in:
parent
6afa79fe7f
commit
7e4e2250bb
20 changed files with 1979 additions and 1751 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -1,7 +1,7 @@
|
||||||
# Terraform directories
|
# Terraform directories
|
||||||
**/.terraform/
|
**/.terraform/
|
||||||
**/terraform/
|
#**/terraform/
|
||||||
|
|
||||||
# Terraform state files
|
# Terraform state files
|
||||||
**/terraform.tfstate
|
**/terraform.tfstate
|
||||||
**/terraform.tfstate.*
|
**/terraform.tfstate.*
|
||||||
|
|
|
||||||
|
|
@ -1,184 +0,0 @@
|
||||||
#cloud-config
|
|
||||||
|
|
||||||
# Users
|
|
||||||
users:
|
|
||||||
- name: graham
|
|
||||||
groups: [wheel, adm]
|
|
||||||
shell: /bin/bash
|
|
||||||
sudo: ALL=(ALL) NOPASSWD:ALL
|
|
||||||
ssh_authorized_keys:
|
|
||||||
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGthwaOgNUPMl1P3yXLBdKYXXvxUvlm4/BShLOm9hqRO
|
|
||||||
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHLyVSEEAEbGZZqwPwEup0XrlTpu3x3iF9ExvvQPA4xN graham@mcintire.me
|
|
||||||
- name: ansible
|
|
||||||
uid: 10001
|
|
||||||
groups: [wheel, adm]
|
|
||||||
shell: /bin/bash
|
|
||||||
sudo: ALL=(ALL) NOPASSWD:ALL
|
|
||||||
ssh_authorized_keys:
|
|
||||||
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGthwaOgNUPMl1P3yXLBdKYXXvxUvlm4/BShLOm9hqRO
|
|
||||||
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHLyVSEEAEbGZZqwPwEup0XrlTpu3x3iF9ExvvQPA4xN graham@mcintire.me
|
|
||||||
|
|
||||||
# Package management
|
|
||||||
package_update: true
|
|
||||||
package_upgrade: true
|
|
||||||
packages:
|
|
||||||
- curl
|
|
||||||
- wget
|
|
||||||
- bash
|
|
||||||
- sudo
|
|
||||||
- python3
|
|
||||||
- py3-pip
|
|
||||||
- openrc
|
|
||||||
- iptables
|
|
||||||
|
|
||||||
# Write files
|
|
||||||
write_files:
|
|
||||||
# Caddy binary installation script
|
|
||||||
- path: /usr/local/bin/install-caddy.sh
|
|
||||||
permissions: '0755'
|
|
||||||
content: |
|
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
echo "Installing Caddy..."
|
|
||||||
|
|
||||||
# Download and install Caddy
|
|
||||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/setup.alpine.sh' | bash
|
|
||||||
apk add caddy
|
|
||||||
|
|
||||||
# Create caddy user and directories
|
|
||||||
adduser -D -s /sbin/nologin caddy || true
|
|
||||||
mkdir -p /etc/caddy /var/log/caddy /var/lib/caddy
|
|
||||||
chown -R caddy:caddy /etc/caddy /var/log/caddy /var/lib/caddy
|
|
||||||
chmod 755 /etc/caddy
|
|
||||||
|
|
||||||
# Tailscale installation script
|
|
||||||
- path: /usr/local/bin/install-tailscale.sh
|
|
||||||
permissions: '0755'
|
|
||||||
content: |
|
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
echo "Installing Tailscale..."
|
|
||||||
|
|
||||||
# Download and install Tailscale
|
|
||||||
curl -fsSL https://tailscale.com/install.sh | sh
|
|
||||||
|
|
||||||
# Enable IP forwarding
|
|
||||||
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
|
|
||||||
echo 'net.ipv6.conf.all.forwarding = 1' >> /etc/sysctl.conf
|
|
||||||
sysctl -p
|
|
||||||
|
|
||||||
# Caddy configuration file
|
|
||||||
- path: /etc/caddy/Caddyfile
|
|
||||||
permissions: '0644'
|
|
||||||
owner: caddy:caddy
|
|
||||||
content: |
|
|
||||||
# Default catch-all for unconfigured domains
|
|
||||||
:80 {
|
|
||||||
respond "Service temporarily unavailable - Tailscale backend not configured" 503
|
|
||||||
}
|
|
||||||
|
|
||||||
# Example configuration for blog.w5isp.com
|
|
||||||
# This will need to be updated once you have the actual Tailscale IPs
|
|
||||||
blog.w5isp.com {
|
|
||||||
# Replace with actual Tailscale IP when available
|
|
||||||
# reverse_proxy 100.64.x.x:port
|
|
||||||
respond "Backend not configured yet" 503
|
|
||||||
}
|
|
||||||
|
|
||||||
# Add more domains here as needed:
|
|
||||||
example.w5isp.com {
|
|
||||||
reverse_proxy 100.64.x.x:port
|
|
||||||
}
|
|
||||||
|
|
||||||
# Caddy OpenRC service file
|
|
||||||
- path: /etc/init.d/caddy
|
|
||||||
permissions: '0755'
|
|
||||||
content: |
|
|
||||||
#!/sbin/openrc-run
|
|
||||||
|
|
||||||
name="Caddy web server"
|
|
||||||
description="Fast, multi-platform web server with automatic HTTPS"
|
|
||||||
|
|
||||||
command="/usr/bin/caddy"
|
|
||||||
command_args="run --config /etc/caddy/Caddyfile --adapter caddyfile"
|
|
||||||
command_user="caddy:caddy"
|
|
||||||
command_background="yes"
|
|
||||||
pidfile="/run/caddy.pid"
|
|
||||||
|
|
||||||
start_stop_daemon_args="--stdout /var/log/caddy/access.log --stderr /var/log/caddy/error.log"
|
|
||||||
|
|
||||||
depend() {
|
|
||||||
need net
|
|
||||||
after firewall
|
|
||||||
}
|
|
||||||
|
|
||||||
# Tailscale startup script
|
|
||||||
- path: /usr/local/bin/tailscale-setup.sh
|
|
||||||
permissions: '0755'
|
|
||||||
content: |
|
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Wait for tailscaled to be ready
|
|
||||||
sleep 5
|
|
||||||
|
|
||||||
# Get auth key from environment or metadata
|
|
||||||
AUTH_KEY="${TAILSCALE_AUTH_KEY}"
|
|
||||||
if [ -z "$AUTH_KEY" ]; then
|
|
||||||
echo "No Tailscale auth key found, skipping authentication"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Authenticating with Tailscale..."
|
|
||||||
tailscale up --authkey="$AUTH_KEY" --accept-routes
|
|
||||||
|
|
||||||
echo "Tailscale setup complete"
|
|
||||||
tailscale status
|
|
||||||
|
|
||||||
# Environment file for services
|
|
||||||
- path: /etc/environment
|
|
||||||
permissions: '0644'
|
|
||||||
content: |
|
|
||||||
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
|
||||||
|
|
||||||
# Run commands during cloud-init
|
|
||||||
runcmd:
|
|
||||||
# Update package cache
|
|
||||||
- apk update
|
|
||||||
|
|
||||||
# Install Caddy
|
|
||||||
- /usr/local/bin/install-caddy.sh
|
|
||||||
|
|
||||||
# Install Tailscale
|
|
||||||
- /usr/local/bin/install-tailscale.sh
|
|
||||||
|
|
||||||
# Configure firewall (basic Alpine firewall)
|
|
||||||
- iptables -I INPUT -p tcp --dport 22 -j ACCEPT
|
|
||||||
- iptables -I INPUT -p tcp --dport 80 -j ACCEPT
|
|
||||||
- iptables -I INPUT -p tcp --dport 443 -j ACCEPT
|
|
||||||
- iptables -I INPUT -i lo -j ACCEPT
|
|
||||||
- iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
|
|
||||||
- rc-service iptables save
|
|
||||||
|
|
||||||
# Enable and start services
|
|
||||||
- rc-update add caddy default
|
|
||||||
- rc-service caddy start
|
|
||||||
|
|
||||||
# Start tailscaled
|
|
||||||
- rc-service tailscale start
|
|
||||||
- rc-update add tailscale default
|
|
||||||
|
|
||||||
# Set up Tailscale (this will need the auth key passed via user-data or metadata)
|
|
||||||
- sleep 10
|
|
||||||
- /usr/local/bin/tailscale-setup.sh || true
|
|
||||||
|
|
||||||
# Final message
|
|
||||||
final_message: |
|
|
||||||
Cloud-init setup complete!
|
|
||||||
- Caddy web server installed and running
|
|
||||||
- Tailscale VPN installed (needs auth key for setup)
|
|
||||||
- Users: graham, ansible (both with sudo access)
|
|
||||||
- Services managed via OpenRC
|
|
||||||
|
|
||||||
To complete Tailscale setup, run:
|
|
||||||
tailscale up --authkey=YOUR_AUTH_KEY --accept-routes
|
|
||||||
39
home/terraform/dns_aprs.tf
Normal file
39
home/terraform/dns_aprs.tf
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
# DNS configuration for aprs.me domain
|
||||||
|
# Points to Traefik ingress on k3s cluster for APRS application
|
||||||
|
|
||||||
|
resource "powerdns_record" "aprs_me_soa" {
|
||||||
|
depends_on = [powerdns_zone.aprs_me]
|
||||||
|
zone = "aprs.me."
|
||||||
|
name = "aprs.me."
|
||||||
|
type = "SOA"
|
||||||
|
ttl = 3600
|
||||||
|
records = ["ns1.as393837.net. graham.mcintire.me. 0 10800 3600 604800 3600"]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "powerdns_record" "aprs_me_root" {
|
||||||
|
depends_on = [powerdns_zone.aprs_me]
|
||||||
|
zone = "aprs.me."
|
||||||
|
name = "aprs.me."
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
records = ["204.110.191.2"] # Traefik ingress on k3s cluster
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "powerdns_record" "aprs_me_www" {
|
||||||
|
depends_on = [powerdns_zone.aprs_me]
|
||||||
|
zone = "aprs.me."
|
||||||
|
name = "www.aprs.me."
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
records = ["204.110.191.2"] # Traefik ingress on k3s cluster
|
||||||
|
}
|
||||||
|
|
||||||
|
# CAA record for Let's Encrypt SSL certificates
|
||||||
|
resource "powerdns_record" "aprs_me_caa" {
|
||||||
|
depends_on = [powerdns_zone.aprs_me]
|
||||||
|
zone = "aprs.me."
|
||||||
|
name = "aprs.me."
|
||||||
|
type = "CAA"
|
||||||
|
ttl = 3600
|
||||||
|
records = ["0 issue \"letsencrypt.org\""]
|
||||||
|
}
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
resource "dnsimple_domain" "w5isp_com" {
|
|
||||||
name = "w5isp.com"
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +1,3 @@
|
||||||
resource "dnsimple_zone" "w5isp_com" {
|
|
||||||
name = "w5isp.com"
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "dnsimple_zone" "gridmap_org" {
|
resource "dnsimple_zone" "gridmap_org" {
|
||||||
name = "gridmap.org"
|
name = "gridmap.org"
|
||||||
|
|
|
||||||
|
|
@ -1,89 +1,79 @@
|
||||||
resource "porkbun_dns_record" "manero_root_a_1" {
|
resource "dnsimple_zone_record" "manero_root_a_1" {
|
||||||
domain = "manero.org"
|
zone_name = "manero.org"
|
||||||
name = ""
|
name = "@"
|
||||||
content = "185.199.108.153"
|
value = "185.199.108.153"
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "manero_root_a_2" {
|
resource "dnsimple_zone_record" "manero_root_a_2" {
|
||||||
domain = "manero.org"
|
zone_name = "manero.org"
|
||||||
name = ""
|
name = "@"
|
||||||
content = "185.199.109.153"
|
value = "185.199.109.153"
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "manero_root_a_3" {
|
resource "dnsimple_zone_record" "manero_root_a_3" {
|
||||||
domain = "manero.org"
|
zone_name = "manero.org"
|
||||||
name = ""
|
name = "@"
|
||||||
content = "185.199.110.153"
|
value = "185.199.110.153"
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "manero_root_a_4" {
|
resource "dnsimple_zone_record" "manero_root_a_4" {
|
||||||
domain = "manero.org"
|
zone_name = "manero.org"
|
||||||
name = ""
|
name = "@"
|
||||||
content = "185.199.111.153"
|
value = "185.199.111.153"
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "manero_irc_a" {
|
resource "dnsimple_zone_record" "manero_irc_a" {
|
||||||
domain = "manero.org"
|
zone_name = "manero.org"
|
||||||
name = "irc"
|
name = "irc"
|
||||||
content = "149.28.242.178"
|
value = "149.28.242.178"
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "manero_us_a" {
|
resource "dnsimple_zone_record" "manero_us_a" {
|
||||||
domain = "manero.org"
|
zone_name = "manero.org"
|
||||||
name = "us"
|
name = "us"
|
||||||
content = "149.28.242.178"
|
value = "149.28.242.178"
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "manero_us_aaaa" {
|
resource "dnsimple_zone_record" "manero_us_aaaa" {
|
||||||
domain = "manero.org"
|
zone_name = "manero.org"
|
||||||
name = "us"
|
name = "us"
|
||||||
content = "2001:19f0:6401:19e6:5400:5ff:fe45:5701"
|
value = "2001:19f0:6401:19e6:5400:5ff:fe45:5701"
|
||||||
type = "AAAA"
|
type = "AAAA"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "manero_ca_a" {
|
resource "dnsimple_zone_record" "manero_ca_a" {
|
||||||
domain = "manero.org"
|
zone_name = "manero.org"
|
||||||
name = "ca"
|
name = "ca"
|
||||||
content = "167.114.209.151"
|
value = "167.114.209.151"
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "manero_tankfox_a" {
|
resource "dnsimple_zone_record" "manero_tankfox_a" {
|
||||||
domain = "manero.org"
|
zone_name = "manero.org"
|
||||||
name = "tankfox"
|
name = "tankfox"
|
||||||
content = "137.184.202.89"
|
value = "137.184.202.89"
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "manero_404" {
|
resource "dnsimple_zone_record" "manero_404" {
|
||||||
domain = "manero.org"
|
zone_name = "manero.org"
|
||||||
name = "404"
|
name = "404"
|
||||||
content = "404.al"
|
value = "404.al"
|
||||||
type = "CNAME"
|
type = "CNAME"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,118 +1,136 @@
|
||||||
|
# DNS configuration for mcintire.me domain
|
||||||
|
# Mail records point to Mailcow on mail.w5isp.com
|
||||||
|
|
||||||
# Mailcow MX record
|
resource "powerdns_record" "mcintire_soa" {
|
||||||
resource "dnsimple_zone_record" "mcintire_mx_mailcow" {
|
depends_on = [powerdns_zone.mcintire_me]
|
||||||
zone_name = "mcintire.me"
|
zone = "mcintire.me."
|
||||||
name = ""
|
name = "mcintire.me."
|
||||||
priority = 10
|
type = "SOA"
|
||||||
value = "mail.w5isp.com"
|
ttl = 3600
|
||||||
type = "MX"
|
records = ["ns1.as393837.net. graham.mcintire.me. 0 10800 3600 604800 3600"]
|
||||||
ttl = 3600
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "dnsimple_zone_record" "mcintire_mx_backup" {
|
# Mailcow MX records
|
||||||
zone_name = "mcintire.me"
|
resource "powerdns_record" "mcintire_mx_mailcow" {
|
||||||
name = ""
|
depends_on = [powerdns_zone.mcintire_me]
|
||||||
priority = 20
|
zone = "mcintire.me."
|
||||||
value = "mail.nsnw.ca"
|
name = "mcintire.me."
|
||||||
type = "MX"
|
type = "MX"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
|
records = ["10 mail.w5isp.com."]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resource "powerdns_record" "mcintire_mx_backup" {
|
||||||
|
depends_on = [powerdns_zone.mcintire_me]
|
||||||
|
zone = "mcintire.me."
|
||||||
|
name = "mcintire.me."
|
||||||
|
type = "MX"
|
||||||
|
ttl = 3600
|
||||||
|
records = ["20 mail.nsnw.ca."]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "powerdns_record" "mcintire_cname_test" {
|
||||||
|
depends_on = [powerdns_zone.mcintire_me]
|
||||||
resource "dnsimple_zone_record" "mcintire_cname_test" {
|
zone = "mcintire.me."
|
||||||
zone_name = "mcintire.me"
|
name = "*.test.mcintire.me."
|
||||||
name = "*.test"
|
type = "CNAME"
|
||||||
value = "cname.bookappt.link."
|
ttl = 14400
|
||||||
type = "CNAME"
|
records = ["cname.bookappt.link."]
|
||||||
ttl = 14400
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Mail server
|
# Mail server
|
||||||
resource "dnsimple_zone_record" "mcintire_mail" {
|
resource "powerdns_record" "mcintire_mail" {
|
||||||
zone_name = "mcintire.me"
|
depends_on = [powerdns_zone.mcintire_me]
|
||||||
name = "mail"
|
zone = "mcintire.me."
|
||||||
value = "204.110.191.5"
|
name = "mail.mcintire.me."
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
|
records = ["204.110.191.5"]
|
||||||
}
|
}
|
||||||
|
|
||||||
# Autodiscover for mail clients (CNAME to mail server)
|
# Autodiscover for mail clients
|
||||||
resource "dnsimple_zone_record" "mcintire_autodiscover" {
|
resource "powerdns_record" "mcintire_autodiscover" {
|
||||||
zone_name = "mcintire.me"
|
depends_on = [powerdns_zone.mcintire_me]
|
||||||
name = "autodiscover"
|
zone = "mcintire.me."
|
||||||
value = "mail.w5isp.com"
|
name = "autodiscover.mcintire.me."
|
||||||
type = "CNAME"
|
type = "CNAME"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
|
records = ["mail.w5isp.com."]
|
||||||
}
|
}
|
||||||
|
|
||||||
# Autodiscover SRV record
|
# Autodiscover SRV record
|
||||||
resource "dnsimple_zone_record" "mcintire_autodiscover_srv" {
|
resource "powerdns_record" "mcintire_autodiscover_srv" {
|
||||||
zone_name = "mcintire.me"
|
depends_on = [powerdns_zone.mcintire_me]
|
||||||
name = "_autodiscover._tcp"
|
zone = "mcintire.me."
|
||||||
value = "0 443 mail.w5isp.com"
|
name = "_autodiscover._tcp.mcintire.me."
|
||||||
type = "SRV"
|
type = "SRV"
|
||||||
priority = 0
|
ttl = 3600
|
||||||
ttl = 3600
|
records = ["0 0 443 mail.w5isp.com."]
|
||||||
}
|
}
|
||||||
|
|
||||||
# Autoconfig for mail clients
|
# Autoconfig for mail clients
|
||||||
resource "dnsimple_zone_record" "mcintire_autoconfig" {
|
resource "powerdns_record" "mcintire_autoconfig" {
|
||||||
zone_name = "mcintire.me"
|
depends_on = [powerdns_zone.mcintire_me]
|
||||||
name = "autoconfig"
|
zone = "mcintire.me."
|
||||||
value = "mail.w5isp.com"
|
name = "autoconfig.mcintire.me."
|
||||||
type = "CNAME"
|
type = "CNAME"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
|
records = ["mail.w5isp.com."]
|
||||||
}
|
}
|
||||||
|
|
||||||
# SPF record for Mailcow
|
# SPF record for Mailcow
|
||||||
resource "dnsimple_zone_record" "mcintire_spf_mailcow" {
|
resource "powerdns_record" "mcintire_spf_mailcow" {
|
||||||
zone_name = "mcintire.me"
|
depends_on = [powerdns_zone.mcintire_me]
|
||||||
name = ""
|
zone = "mcintire.me."
|
||||||
value = "\"v=spf1 mx a ip4:204.110.191.5 ~all\""
|
name = "mcintire.me."
|
||||||
type = "TXT"
|
type = "TXT"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
|
records = ["\"v=spf1 mx a ip4:204.110.191.5 ~all\""]
|
||||||
}
|
}
|
||||||
|
|
||||||
# DMARC record for Mailcow
|
# DMARC record for Mailcow
|
||||||
resource "dnsimple_zone_record" "mcintire_dmarc_mailcow" {
|
resource "powerdns_record" "mcintire_dmarc_mailcow" {
|
||||||
zone_name = "mcintire.me"
|
depends_on = [powerdns_zone.mcintire_me]
|
||||||
name = "_dmarc"
|
zone = "mcintire.me."
|
||||||
value = "\"v=DMARC1; p=quarantine; rua=mailto:postmaster@mcintire.me; ruf=mailto:postmaster@mcintire.me; fo=1\""
|
name = "_dmarc.mcintire.me."
|
||||||
type = "TXT"
|
type = "TXT"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
|
records = ["\"v=DMARC1; p=quarantine; rua=mailto:postmaster@mcintire.me; ruf=mailto:postmaster@mcintire.me; fo=1\""]
|
||||||
}
|
}
|
||||||
|
|
||||||
# DKIM record from Mailcow
|
# DKIM record from Mailcow
|
||||||
resource "dnsimple_zone_record" "mcintire_dkim_mailcow" {
|
resource "powerdns_record" "mcintire_dkim_mailcow" {
|
||||||
zone_name = "mcintire.me"
|
depends_on = [powerdns_zone.mcintire_me]
|
||||||
name = "dkim._domainkey"
|
zone = "mcintire.me."
|
||||||
value = "v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0rQie7Hz5AmDbVUX+rKNgp6Hf7crtWyfy6qKbqnrxmmernz1rQ6HyOrHhFAlc8nVLNKr8XP2DOROb1jAnrjndZo9I/ymbrrrCBsi9w6zAht2BheijO/R9k5CDRjeSafm6bg0oMKihtNMIdXvEj9ND8hDpZZKxtOrKFH7zLm4CPmm7jf0gqZH2yK+AA3OYUGSYa1OT0LtdMXadk0IVOI2VYf37Hzb3RUvGOYMVkT0xi+23DiyFk7AyCiyv3LQVBMT+/bwyd4k3yVVn2cr9+Nor+HXVjqASLtqcFLMf1SuX0ezSAjBG7BbqQr5G6Jz+n5YglqEIUKVYzJFE7JdDmqQYQIDAQAB"
|
name = "dkim._domainkey.mcintire.me."
|
||||||
type = "TXT"
|
type = "TXT"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
|
records = ["\"v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0rQie7Hz5AmDbVUX+rKNgp6Hf7crtWyfy6qKbqnrxmmernz1rQ6HyOrHhFAlc8nVLNKr8XP2DOROb1jAnrjndZo9I/ymbrrrCBsi9w6zAht2BheijO/R9k5CDRjeSafm6bg0oMKihtNMIdXvEj9ND8hDpZZKxtOrKFH7zLm4CPmm7jf0gqZH2yK+AA3OYUGSYa1OT0LtdMXadk0IVOI2VYf37Hzb3RUvGOYMVkT0xi+23DiyFk7AyCiyv3LQVBMT+/bwyd4k3yVVn2cr9+Nor+HXVjqASLtqcFLMf1SuX0ezSAjBG7BbqQr5G6Jz+n5YglqEIUKVYzJFE7JdDmqQYQIDAQAB\""]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "dnsimple_zone_record" "mcintire_photos" {
|
resource "powerdns_record" "mcintire_photos" {
|
||||||
zone_name = "mcintire.me"
|
depends_on = [powerdns_zone.mcintire_me]
|
||||||
name = "photos"
|
zone = "mcintire.me."
|
||||||
value = "204.110.191.8"
|
name = "photos.mcintire.me."
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
|
records = ["204.110.191.8"]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "dnsimple_zone_record" "mcintire_headscale" {
|
resource "powerdns_record" "mcintire_headscale" {
|
||||||
zone_name = "mcintire.me"
|
depends_on = [powerdns_zone.mcintire_me]
|
||||||
name = "headscale"
|
zone = "mcintire.me."
|
||||||
value = "66.206.18.166"
|
name = "headscale.mcintire.me."
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
|
records = ["66.206.18.166"]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "dnsimple_zone_record" "mcintire_hs" {
|
resource "powerdns_record" "mcintire_hs" {
|
||||||
zone_name = "mcintire.me"
|
depends_on = [powerdns_zone.mcintire_me]
|
||||||
name = "hs"
|
zone = "mcintire.me."
|
||||||
value = "66.206.18.166"
|
name = "hs.mcintire.me."
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
|
records = ["66.206.18.166"]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
118
home/terraform/dns_mcintire_dnsimple_TEMP.tf
Normal file
118
home/terraform/dns_mcintire_dnsimple_TEMP.tf
Normal file
|
|
@ -0,0 +1,118 @@
|
||||||
|
# DNS configuration for mcintire.me domain (DNSimple)
|
||||||
|
# Mail records point to Mailcow on mail.w5isp.com
|
||||||
|
|
||||||
|
# Note: DNSimple manages SOA automatically, no need to define it
|
||||||
|
|
||||||
|
# Mailcow MX records
|
||||||
|
resource "dnsimple_zone_record" "mcintire_mx_mailcow" {
|
||||||
|
zone_name = "mcintire.me"
|
||||||
|
name = ""
|
||||||
|
value = "mail.w5isp.com."
|
||||||
|
type = "MX"
|
||||||
|
ttl = 3600
|
||||||
|
priority = 10
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "mcintire_mx_backup" {
|
||||||
|
zone_name = "mcintire.me"
|
||||||
|
name = ""
|
||||||
|
value = "mail.nsnw.ca."
|
||||||
|
type = "MX"
|
||||||
|
ttl = 3600
|
||||||
|
priority = 20
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "mcintire_cname_test" {
|
||||||
|
zone_name = "mcintire.me"
|
||||||
|
name = "*.test"
|
||||||
|
value = "cname.bookappt.link."
|
||||||
|
type = "CNAME"
|
||||||
|
ttl = 14400
|
||||||
|
}
|
||||||
|
|
||||||
|
# Mail server
|
||||||
|
resource "dnsimple_zone_record" "mcintire_mail" {
|
||||||
|
zone_name = "mcintire.me"
|
||||||
|
name = "mail"
|
||||||
|
value = "204.110.191.5"
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
# Autodiscover for mail clients
|
||||||
|
resource "dnsimple_zone_record" "mcintire_autodiscover" {
|
||||||
|
zone_name = "mcintire.me"
|
||||||
|
name = "autodiscover"
|
||||||
|
value = "mail.w5isp.com."
|
||||||
|
type = "CNAME"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
# Autodiscover SRV record
|
||||||
|
resource "dnsimple_zone_record" "mcintire_autodiscover_srv" {
|
||||||
|
zone_name = "mcintire.me"
|
||||||
|
name = "_autodiscover._tcp"
|
||||||
|
value = "0 0 443 mail.w5isp.com."
|
||||||
|
type = "SRV"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
# Autoconfig for mail clients
|
||||||
|
resource "dnsimple_zone_record" "mcintire_autoconfig" {
|
||||||
|
zone_name = "mcintire.me"
|
||||||
|
name = "autoconfig"
|
||||||
|
value = "mail.w5isp.com."
|
||||||
|
type = "CNAME"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
# SPF record for Mailcow
|
||||||
|
resource "dnsimple_zone_record" "mcintire_spf_mailcow" {
|
||||||
|
zone_name = "mcintire.me"
|
||||||
|
name = ""
|
||||||
|
value = "v=spf1 mx a ip4:204.110.191.5 ~all"
|
||||||
|
type = "TXT"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
# DMARC record for Mailcow
|
||||||
|
resource "dnsimple_zone_record" "mcintire_dmarc_mailcow" {
|
||||||
|
zone_name = "mcintire.me"
|
||||||
|
name = "_dmarc"
|
||||||
|
value = "v=DMARC1; p=quarantine; rua=mailto:postmaster@mcintire.me; ruf=mailto:postmaster@mcintire.me; fo=1"
|
||||||
|
type = "TXT"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
# DKIM record from Mailcow
|
||||||
|
resource "dnsimple_zone_record" "mcintire_dkim_mailcow" {
|
||||||
|
zone_name = "mcintire.me"
|
||||||
|
name = "dkim._domainkey"
|
||||||
|
value = "v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0rQie7Hz5AmDbVUX+rKNgp6Hf7crtWyfy6qKbqnrxmmernz1rQ6HyOrHhFAlc8nVLNKr8XP2DOROb1jAnrjndZo9I/ymbrrrCBsi9w6zAht2BheijO/R9k5CDRjeSafm6bg0oMKihtNMIdXvEj9ND8hDpZZKxtOrKFH7zLm4CPmm7jf0gqZH2yK+AA3OYUGSYa1OT0LtdMXadk0IVOI2VYf37Hzb3RUvGOYMVkT0xi+23DiyFk7AyCiyv3LQVBMT+/bwyd4k3yVVn2cr9+Nor+HXVjqASLtqcFLMf1SuX0ezSAjBG7BbqQr5G6Jz+n5YglqEIUKVYzJFE7JdDmqQYQIDAQAB"
|
||||||
|
type = "TXT"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "mcintire_photos" {
|
||||||
|
zone_name = "mcintire.me"
|
||||||
|
name = "photos"
|
||||||
|
value = "204.110.191.8"
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "mcintire_headscale" {
|
||||||
|
zone_name = "mcintire.me"
|
||||||
|
name = "headscale"
|
||||||
|
value = "66.206.18.166"
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "mcintire_hs" {
|
||||||
|
zone_name = "mcintire.me"
|
||||||
|
name = "hs"
|
||||||
|
value = "66.206.18.166"
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
52
home/terraform/dns_powerdns_zones.tf
Normal file
52
home/terraform/dns_powerdns_zones.tf
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
# Vultr PowerDNS Zones
|
||||||
|
# All zones managed on the Vultr PowerDNS instance
|
||||||
|
|
||||||
|
resource "powerdns_zone" "w5isp" {
|
||||||
|
name = "w5isp.com."
|
||||||
|
kind = "Native"
|
||||||
|
soa_edit_api = "DEFAULT"
|
||||||
|
nameservers = ["ns1.as393837.net.", "ns-global.kjsl.com."]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "powerdns_zone" "aprs_me" {
|
||||||
|
name = "aprs.me."
|
||||||
|
kind = "Native"
|
||||||
|
soa_edit_api = "DEFAULT"
|
||||||
|
nameservers = ["ns1.as393837.net.", "ns-global.kjsl.com."]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "powerdns_zone" "mcintire_me" {
|
||||||
|
name = "mcintire.me."
|
||||||
|
kind = "Native"
|
||||||
|
soa_edit_api = "DEFAULT"
|
||||||
|
nameservers = ["ns1.as393837.net.", "ns-global.kjsl.com."]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Reverse DNS zones
|
||||||
|
resource "powerdns_zone" "vntx1" {
|
||||||
|
name = "188.110.204.in-addr.arpa."
|
||||||
|
kind = "Native"
|
||||||
|
soa_edit_api = "DEFAULT"
|
||||||
|
nameservers = ["ns1.as393837.net.", "ns-global.kjsl.com."]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "powerdns_zone" "vntx2" {
|
||||||
|
name = "189.110.204.in-addr.arpa."
|
||||||
|
kind = "Native"
|
||||||
|
soa_edit_api = "DEFAULT"
|
||||||
|
nameservers = ["ns1.as393837.net.", "ns-global.kjsl.com."]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "powerdns_zone" "vntx3" {
|
||||||
|
name = "190.110.204.in-addr.arpa."
|
||||||
|
kind = "Native"
|
||||||
|
soa_edit_api = "DEFAULT"
|
||||||
|
nameservers = ["ns1.as393837.net.", "ns-global.kjsl.com."]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "powerdns_zone" "vntx4" {
|
||||||
|
name = "191.110.204.in-addr.arpa."
|
||||||
|
kind = "Native"
|
||||||
|
soa_edit_api = "DEFAULT"
|
||||||
|
nameservers = ["ns1.as393837.net.", "ns-global.kjsl.com."]
|
||||||
|
}
|
||||||
|
|
@ -1,32 +1,44 @@
|
||||||
resource "powerdns_zone" "vntx1" {
|
# Reverse DNS zones are defined in dns_powerdns_zones.tf
|
||||||
name = "188.110.204.in-addr.arpa."
|
|
||||||
kind = "Native"
|
# SOA records for reverse zones
|
||||||
soa_edit_api = "DEFAULT"
|
resource "powerdns_record" "vntx1_soa" {
|
||||||
nameservers = ["ns1.vntx.net.", "ns2.vntx.net.", "ns-global.kjsl.com."]
|
depends_on = [powerdns_zone.vntx1]
|
||||||
|
zone = "188.110.204.in-addr.arpa."
|
||||||
|
name = "188.110.204.in-addr.arpa."
|
||||||
|
type = "SOA"
|
||||||
|
ttl = 3600
|
||||||
|
records = ["ns1.as393837.net. graham.mcintire.me. 0 10800 3600 604800 3600"]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "powerdns_zone" "vntx2" {
|
resource "powerdns_record" "vntx2_soa" {
|
||||||
name = "189.110.204.in-addr.arpa."
|
depends_on = [powerdns_zone.vntx2]
|
||||||
kind = "Native"
|
zone = "189.110.204.in-addr.arpa."
|
||||||
soa_edit_api = "DEFAULT"
|
name = "189.110.204.in-addr.arpa."
|
||||||
nameservers = ["ns1.vntx.net.", "ns2.vntx.net.", "ns-global.kjsl.com."]
|
type = "SOA"
|
||||||
|
ttl = 3600
|
||||||
|
records = ["ns1.as393837.net. graham.mcintire.me. 0 10800 3600 604800 3600"]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "powerdns_zone" "vntx3" {
|
resource "powerdns_record" "vntx3_soa" {
|
||||||
name = "190.110.204.in-addr.arpa."
|
depends_on = [powerdns_zone.vntx3]
|
||||||
kind = "Native"
|
zone = "190.110.204.in-addr.arpa."
|
||||||
soa_edit_api = "DEFAULT"
|
name = "190.110.204.in-addr.arpa."
|
||||||
nameservers = ["ns1.vntx.net.", "ns2.vntx.net.", "ns-global.kjsl.com."]
|
type = "SOA"
|
||||||
|
ttl = 3600
|
||||||
|
records = ["ns1.as393837.net. graham.mcintire.me. 0 10800 3600 604800 3600"]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "powerdns_zone" "vntx4" {
|
resource "powerdns_record" "vntx4_soa" {
|
||||||
name = "191.110.204.in-addr.arpa."
|
depends_on = [powerdns_zone.vntx4]
|
||||||
kind = "Native"
|
zone = "191.110.204.in-addr.arpa."
|
||||||
soa_edit_api = "DEFAULT"
|
name = "191.110.204.in-addr.arpa."
|
||||||
nameservers = ["ns1.vntx.net.", "ns2.vntx.net.", "ns-global.kjsl.com."]
|
type = "SOA"
|
||||||
|
ttl = 3600
|
||||||
|
records = ["ns1.as393837.net. graham.mcintire.me. 0 10800 3600 604800 3600"]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "powerdns_record" "ptr_records1" {
|
resource "powerdns_record" "ptr_records1" {
|
||||||
|
depends_on = [powerdns_zone.vntx1]
|
||||||
for_each = {
|
for_each = {
|
||||||
for i in range(256) : tostring(i) => {
|
for i in range(256) : tostring(i) => {
|
||||||
name = "${i}.188.110.204.in-addr.arpa."
|
name = "${i}.188.110.204.in-addr.arpa."
|
||||||
|
|
@ -42,6 +54,7 @@ resource "powerdns_record" "ptr_records1" {
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "powerdns_record" "ptr_records2" {
|
resource "powerdns_record" "ptr_records2" {
|
||||||
|
depends_on = [powerdns_zone.vntx2]
|
||||||
for_each = {
|
for_each = {
|
||||||
for i in range(256) : tostring(i) => {
|
for i in range(256) : tostring(i) => {
|
||||||
name = "${i}.189.110.204.in-addr.arpa."
|
name = "${i}.189.110.204.in-addr.arpa."
|
||||||
|
|
@ -57,6 +70,7 @@ resource "powerdns_record" "ptr_records2" {
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "powerdns_record" "ptr_records3" {
|
resource "powerdns_record" "ptr_records3" {
|
||||||
|
depends_on = [powerdns_zone.vntx3]
|
||||||
for_each = {
|
for_each = {
|
||||||
for i in range(256) : tostring(i) => {
|
for i in range(256) : tostring(i) => {
|
||||||
name = "${i}.190.110.204.in-addr.arpa."
|
name = "${i}.190.110.204.in-addr.arpa."
|
||||||
|
|
@ -72,6 +86,7 @@ resource "powerdns_record" "ptr_records3" {
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "powerdns_record" "ptr_records4" {
|
resource "powerdns_record" "ptr_records4" {
|
||||||
|
depends_on = [powerdns_zone.vntx4]
|
||||||
for_each = {
|
for_each = {
|
||||||
for i in range(256) : tostring(i) => {
|
for i in range(256) : tostring(i) => {
|
||||||
name = "${i}.191.110.204.in-addr.arpa."
|
name = "${i}.191.110.204.in-addr.arpa."
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
85
home/terraform/dns_vntx_net_porkbun_TEMP.tf
Normal file
85
home/terraform/dns_vntx_net_porkbun_TEMP.tf
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
# TEMPORARY FILE - vntx.net Porkbun configuration
|
||||||
|
# Forward records for reverse DNS zones removed (*.client A records)
|
||||||
|
# Contains TXT and CNAME records only
|
||||||
|
|
||||||
|
resource "porkbun_dns_record" "vntx_txt_records" {
|
||||||
|
for_each = {
|
||||||
|
"_twilio" = "twilio-domain-verification=12bf63d61b86412618bdb4ab6c2b287a"
|
||||||
|
"_dmarc" = "v=DMARC1; p=none"
|
||||||
|
"_updown" = "updown-page=p/34yuc"
|
||||||
|
"_github-challenge-vntx" = "34ea2705e4"
|
||||||
|
"_github-pages-challenge-gmcintire" = "d125f4244edd0120ee0fa073d3acf1"
|
||||||
|
"krs._domainkey.mg" = "k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHbWtJ5uPGEOPmJrT36WBXKxVL0b4fqjIM4n6oXK4zaUucqYp7jeoKG+FTO5XEjyja7hsP9WahntUrVb8WI5V6Cj0CznesMrM7oQRntcyuy8mSD1zilmZe4q2Kc65gj2MRrkg3tkJfogXHNz2rxmquNu/DxsFLeQP8a2E5tYXVFwIDAQAB"
|
||||||
|
"mandrill._domainkey" = "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrLHiExVd55zd/IQ/J/mRwSRMAocV/hMB3jXwaHH36d9NaVynQFYV8NaWi69c1veUtRzGt7yAioXqLj7Z4TeEUoOLgrKsn8YnckGs9i3B3tVFB+Ch/4mPhXWiNfNdynHWBcPcbJ8kjEQ2U8y78dHZj1YeRXXVvWob2OaKynO8/lQIDAQAB;"
|
||||||
|
"mg" = "v=spf1 include:mailgun.org ~all"
|
||||||
|
"o365" = "v=spf1 include:spf.protection.outlook.com -all"
|
||||||
|
"spf" = "v=spf1 include:_spf.google.com include:spf.mandrillapp.com ~all"
|
||||||
|
"@" = "google-site-verification=RD-gYkKRPw1TSIzHRAuJljZ7Xee6uDGGkFvL6XmSjs0"
|
||||||
|
"detectify-verification" = "7c06e001f2f39c59564baabd497360e2"
|
||||||
|
"keybase-site-verification" = "xNV8FawC3MsGF70UNFKaKQUUOyQvjeL0DMK_RMQQ-_Q"
|
||||||
|
"MS" = "ms84271221"
|
||||||
|
"have-i-been-pwned-verification" = "beb9c178a27aaaaa007c4c84d64dccf5"
|
||||||
|
}
|
||||||
|
|
||||||
|
domain = "vntx.net"
|
||||||
|
name = each.key
|
||||||
|
content = each.value
|
||||||
|
type = "TXT"
|
||||||
|
ttl = 3600
|
||||||
|
priority = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# resource "porkbun_dns_record" "vntx_srv1" {
|
||||||
|
# domain = "vntx.net"
|
||||||
|
# name = "_sipfederationtls._tcp.o365"
|
||||||
|
# type = "SRV"
|
||||||
|
# priority = 100
|
||||||
|
# content = "5061 sipfed.online.lync.com."
|
||||||
|
# ttl = 3600
|
||||||
|
# }
|
||||||
|
|
||||||
|
|
||||||
|
# SRV("_sip._tls.o365", 100, 1, 443, "sipdir.online.lync.com.", TTL(3600)),
|
||||||
|
|
||||||
|
resource "porkbun_dns_record" "vntx_cname_records" {
|
||||||
|
for_each = {
|
||||||
|
"mte1._domainkey" = "dkim1.mandrillapp.com."
|
||||||
|
"mte2._domainkey" = "dkim2.mandrillapp.com."
|
||||||
|
"em924886" = "return.smtp2go.net."
|
||||||
|
"s924886._domainkey" = "dkim.smtp2go.net."
|
||||||
|
"link" = "track.smtp2go.net."
|
||||||
|
"_83337805c305955c6823504cc5e6ca29" = "_baf97cdcc7b6458fa5719e4261e9932f.sdgjtdhdhz.acm-validations.aws."
|
||||||
|
"activate" = "verona-networks-checkout.gaiia-consumer.com."
|
||||||
|
"portal" = "verona-networks-clientportal.gaiia-consumer.com."
|
||||||
|
"url9812" = "sendgrid.net."
|
||||||
|
"url62" = "sendgrid.net."
|
||||||
|
"177982" = "sendgrid.net."
|
||||||
|
"_4080c249b6e72dd04f2a9508aa1a1b7f.kivrak" = "_de3e5d511f3869bbd271b935a3b4f973.tljzshvwok.acm-validations.aws."
|
||||||
|
"4809fce066c3da4d14197c7276ba083f.irc" = "b58bf151af520d34d8fad99d05274cb536893031.comodoca.com."
|
||||||
|
"9p83fpanfdgs8xdgcnzd" = "verify.squarespace.com."
|
||||||
|
"autodiscover.o365" = "autodiscover.outlook.com."
|
||||||
|
"autodiscover" = "autodiscover.outlook.com."
|
||||||
|
"_bc1077259b1fbbb11c1e16756e1883f9.irc" = "793f217a963b25f361ec1975e0fd7d54.dc2ec86a36550aed25a0011c0b2b044b.62f7abe714ec1.comodoca.com."
|
||||||
|
"em9279" = "u177982.wl233.sendgrid.net."
|
||||||
|
"email.mg" = "mailgun.org."
|
||||||
|
"email" = "mandrillapp.com."
|
||||||
|
"enterpriseenrollment.o365" = "enterpriseenrollment.manage.microsoft.com."
|
||||||
|
"enterpriseregistration.o365" = "enterpriseregistration.windows.net."
|
||||||
|
"lyncdiscover.o365" = "webdir.online.lync.com."
|
||||||
|
"s1._domainkey" = "s1.domainkey.u177982.wl233.sendgrid.net."
|
||||||
|
"s2._domainkey" = "s2.domainkey.u177982.wl233.sendgrid.net."
|
||||||
|
"sip.o365" = "sipdir.online.lync.com."
|
||||||
|
"www" = "ext-cust.squarespace.com."
|
||||||
|
"uptime" = "page.updown.io."
|
||||||
|
"status" = "stats.uptimerobot.com."
|
||||||
|
"ntp" = "0.us.pool.ntp.org."
|
||||||
|
"iptrack" = "dokku.w5isp.com."
|
||||||
|
}
|
||||||
|
|
||||||
|
domain = "vntx.net"
|
||||||
|
name = each.key
|
||||||
|
content = each.value
|
||||||
|
type = "CNAME"
|
||||||
|
ttl = 3600
|
||||||
|
priority = 0
|
||||||
|
}
|
||||||
|
|
@ -1,245 +1,253 @@
|
||||||
resource "porkbun_dns_record" "w5isp_root" {
|
resource "powerdns_record" "w5isp_soa" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = ""
|
zone = "w5isp.com."
|
||||||
content = "204.110.191.5"
|
name = "w5isp.com."
|
||||||
type = "A"
|
type = "SOA"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["ns1.as393837.net. graham.mcintire.me. 0 10800 3600 604800 3600"]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_git" {
|
resource "powerdns_record" "w5isp_root" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "git"
|
zone = "w5isp.com."
|
||||||
content = "66.206.18.163"
|
name = "w5isp.com."
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["204.110.191.5"]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_home" {
|
resource "powerdns_record" "w5isp_git" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "home"
|
zone = "w5isp.com."
|
||||||
content = "204.110.191.1"
|
name = "git.w5isp.com."
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["66.206.18.163"]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resource "powerdns_record" "w5isp_home" {
|
||||||
resource "porkbun_dns_record" "w5isp_photos" {
|
depends_on = [powerdns_zone.w5isp]
|
||||||
domain = "w5isp.com"
|
zone = "w5isp.com."
|
||||||
name = "photos"
|
name = "home.w5isp.com."
|
||||||
content = "204.110.191.8"
|
type = "A"
|
||||||
type = "A"
|
ttl = 3600
|
||||||
ttl = 3600
|
records = ["204.110.191.1"]
|
||||||
priority = 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_skippy" {
|
resource "powerdns_record" "w5isp_photos" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "skippy"
|
zone = "w5isp.com."
|
||||||
content = "204.110.191.8"
|
name = "photos.w5isp.com."
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["204.110.191.8"]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_ha" {
|
resource "powerdns_record" "w5isp_skippy" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "ha"
|
zone = "w5isp.com."
|
||||||
content = "q1l09qiycnaagngmjsg1qas0rhqcfoou.ui.nabu.casa"
|
name = "skippy.w5isp.com."
|
||||||
type = "CNAME"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["204.110.191.8"]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_mx1" {
|
resource "powerdns_record" "w5isp_ha" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = ""
|
zone = "w5isp.com."
|
||||||
priority = 10
|
name = "ha.w5isp.com."
|
||||||
content = "mail.w5isp.com"
|
type = "CNAME"
|
||||||
type = "MX"
|
ttl = 3600
|
||||||
ttl = 3600
|
records = ["q1l09qiycnaagngmjsg1qas0rhqcfoou.ui.nabu.casa."]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_txt" {
|
resource "powerdns_record" "w5isp_mx1" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = ""
|
zone = "w5isp.com."
|
||||||
content = "v=spf1 mx a ip4:204.110.191.5 ~all"
|
name = "w5isp.com."
|
||||||
type = "TXT"
|
type = "MX"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["10 mail.w5isp.com."]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "powerdns_record" "w5isp_txt" {
|
||||||
|
depends_on = [powerdns_zone.w5isp]
|
||||||
|
zone = "w5isp.com."
|
||||||
|
name = "w5isp.com."
|
||||||
|
type = "TXT"
|
||||||
|
ttl = 3600
|
||||||
|
records = ["\"v=spf1 mx a ip4:204.110.191.5 ~all\""]
|
||||||
}
|
}
|
||||||
|
|
||||||
# DKIM record
|
# DKIM record
|
||||||
resource "porkbun_dns_record" "w5isp_dkim" {
|
resource "powerdns_record" "w5isp_dkim" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "dkim._domainkey"
|
zone = "w5isp.com."
|
||||||
content = "v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxti2t8TvzIqKF9BpKn3rQExKg3sS1SyQuwtQgL0r/ELEJ0D9cKU/iM+eB1ROJctKHoMqKDJoRCMP6eibFcgq2kLKqf+aceEOIBx2OK2WCXML+CNqQZA6yO+A8/Jq7iFZPq8D5FmOoxbwRZkso7CkSennSz/+F7nBPI/OfyEiiI4xJzWH3t8SaAkkcy46O+1K0iCkTpsthon7E2PHa3SPkrjbep/5NImTJLK5LuffiLJtLsiK+73mvsAYCDmrNxPTaDjXkj0TWdKl/d/TnlVJl+YloqWIDt/7LtZQM0C7GZ9flIr7z9hHpSWERXAA5Gj5NQ0/hcY3nF4dPoqWs3VeeQIDAQAB"
|
name = "dkim._domainkey.w5isp.com."
|
||||||
type = "TXT"
|
type = "TXT"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["\"v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxti2t8TvzIqKF9BpKn3rQExKg3sS1SyQuwtQgL0r/ELEJ0D9cKU/iM+eB1ROJctKHoMqKDJoRCMP6eibFcgq2kLKqf+aceEOIBx2OK2WCXML+CNqQZA6yO+A8/Jq7iFZPq8D5FmOoxbwRZkso7CkSennSz/+F7nBPI/OfyEiiI4xJzWH3t8SaAkkcy46O+1K0iCkTpsthon7E2PHa3SPkrjbep/5NImTJLK5LuffiLJtLsiK+73mvsAYCDmrNxPTaDjXkj0TWdKl/d/TnlVJl+YloqWIDt/7LtZQM0C7GZ9flIr7z9hHpSWERXAA5Gj5NQ0/hcY3nF4dPoqWs3VeeQIDAQAB\""]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_g" {
|
resource "powerdns_record" "w5isp_g" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "g"
|
zone = "w5isp.com."
|
||||||
content = "204.110.191.5"
|
name = "g.w5isp.com."
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["204.110.191.5"]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_truck" {
|
resource "powerdns_record" "w5isp_truck" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "truck"
|
zone = "w5isp.com."
|
||||||
content = "g.w5isp.com."
|
name = "truck.w5isp.com."
|
||||||
type = "CNAME"
|
type = "CNAME"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["g.w5isp.com."]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_sendgrid1" {
|
resource "powerdns_record" "w5isp_sendgrid1" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "em40"
|
zone = "w5isp.com."
|
||||||
content = "u177982.wl233.sendgrid.net"
|
name = "em40.w5isp.com."
|
||||||
type = "CNAME"
|
type = "CNAME"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["u177982.wl233.sendgrid.net."]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_sendgrid2" {
|
resource "powerdns_record" "w5isp_sendgrid2" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "s1._domainkey"
|
zone = "w5isp.com."
|
||||||
content = "s1.domainkey.u177982.wl233.sendgrid.net."
|
name = "s1._domainkey.w5isp.com."
|
||||||
type = "CNAME"
|
type = "CNAME"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["s1.domainkey.u177982.wl233.sendgrid.net."]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_sendgrid3" {
|
resource "powerdns_record" "w5isp_sendgrid3" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "s2._domainkey"
|
zone = "w5isp.com."
|
||||||
content = "s2.domainkey.u177982.wl233.sendgrid.net."
|
name = "s2._domainkey.w5isp.com."
|
||||||
type = "CNAME"
|
type = "CNAME"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["s2.domainkey.u177982.wl233.sendgrid.net."]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_dmarc" {
|
resource "powerdns_record" "w5isp_dmarc" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "_dmarc"
|
zone = "w5isp.com."
|
||||||
content = "v=DMARC1; p=quarantine; rua=mailto:postmaster@w5isp.com; ruf=mailto:postmaster@w5isp.com; fo=1"
|
name = "_dmarc.w5isp.com."
|
||||||
type = "TXT"
|
type = "TXT"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["\"v=DMARC1; p=quarantine; rua=mailto:postmaster@w5isp.com; ruf=mailto:postmaster@w5isp.com; fo=1\""]
|
||||||
}
|
}
|
||||||
|
|
||||||
# Mail server
|
# Mail server
|
||||||
resource "porkbun_dns_record" "w5isp_mail" {
|
resource "powerdns_record" "w5isp_mail" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "mail"
|
zone = "w5isp.com."
|
||||||
content = "204.110.191.5"
|
name = "mail.w5isp.com."
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["204.110.191.5"]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_sync" {
|
resource "powerdns_record" "w5isp_sync" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "sync"
|
zone = "w5isp.com."
|
||||||
content = "204.110.191.216"
|
name = "sync.w5isp.com."
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["204.110.191.216"]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_log" {
|
resource "powerdns_record" "w5isp_log" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "log"
|
zone = "w5isp.com."
|
||||||
content = "g.w5isp.com"
|
name = "log.w5isp.com."
|
||||||
type = "CNAME"
|
type = "CNAME"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["g.w5isp.com."]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_autodiscover" {
|
resource "powerdns_record" "w5isp_autodiscover" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "autodiscover"
|
zone = "w5isp.com."
|
||||||
content = "mail.w5isp.com"
|
name = "autodiscover.w5isp.com."
|
||||||
type = "CNAME"
|
type = "CNAME"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["mail.w5isp.com."]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_autodiscover_srv" {
|
resource "powerdns_record" "w5isp_autodiscover_srv" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "_autodiscover._tcp"
|
zone = "w5isp.com."
|
||||||
content = "0 443 mail.w5isp.com"
|
name = "_autodiscover._tcp.w5isp.com."
|
||||||
type = "SRV"
|
type = "SRV"
|
||||||
priority = 0
|
ttl = 3600
|
||||||
ttl = 3600
|
records = ["0 0 443 mail.w5isp.com."]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_autoconfig" {
|
resource "powerdns_record" "w5isp_autoconfig" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "autoconfig"
|
zone = "w5isp.com."
|
||||||
content = "mail.w5isp.com"
|
name = "autoconfig.w5isp.com."
|
||||||
type = "CNAME"
|
type = "CNAME"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["mail.w5isp.com."]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_n8n" {
|
resource "powerdns_record" "w5isp_n8n" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "n8n"
|
zone = "w5isp.com."
|
||||||
content = "204.110.191.2" # Traefik ingress on k3s cluster
|
name = "n8n.w5isp.com."
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["204.110.191.2"] # Traefik ingress on k3s cluster
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_nodered" {
|
resource "powerdns_record" "w5isp_nodered" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "nodered"
|
zone = "w5isp.com."
|
||||||
content = "204.110.191.2" # Node-RED via Traefik on k3s cluster
|
name = "nodered.w5isp.com."
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["204.110.191.2"] # Node-RED via Traefik on k3s cluster
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_headscale" {
|
resource "powerdns_record" "w5isp_headscale" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "headscale"
|
zone = "w5isp.com."
|
||||||
content = "66.206.18.166"
|
name = "headscale.w5isp.com."
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["66.206.18.166"]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_hs" {
|
resource "powerdns_record" "w5isp_hs" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "hs"
|
zone = "w5isp.com."
|
||||||
content = "66.206.18.166"
|
name = "hs.w5isp.com."
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["66.206.18.166"]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_dokku" {
|
resource "powerdns_record" "w5isp_dokku" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "dokku"
|
zone = "w5isp.com."
|
||||||
content = "204.110.191.218"
|
name = "dokku.w5isp.com."
|
||||||
type = "A"
|
type = "A"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["204.110.191.218"]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "porkbun_dns_record" "w5isp_camper" {
|
resource "powerdns_record" "w5isp_camper" {
|
||||||
domain = "w5isp.com"
|
depends_on = [powerdns_zone.w5isp]
|
||||||
name = "camper"
|
zone = "w5isp.com."
|
||||||
content = "skippy.w5isp.com."
|
name = "camper.w5isp.com."
|
||||||
type = "CNAME"
|
type = "CNAME"
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
priority = 0
|
records = ["skippy.w5isp.com."]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
226
home/terraform/dns_w5isp_dnsimple_TEMP.tf
Normal file
226
home/terraform/dns_w5isp_dnsimple_TEMP.tf
Normal file
|
|
@ -0,0 +1,226 @@
|
||||||
|
# TEMPORARY FILE - w5isp.com DNSimple configuration
|
||||||
|
# This is a backup/reference of w5isp.com in DNSimple format
|
||||||
|
|
||||||
|
resource "dnsimple_zone" "w5isp_com" {
|
||||||
|
name = "w5isp.com"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_root" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = ""
|
||||||
|
value = "204.110.191.5"
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_git" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "git"
|
||||||
|
value = "66.206.18.163"
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_home" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "home"
|
||||||
|
value = "204.110.191.1"
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_photos" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "photos"
|
||||||
|
value = "204.110.191.8"
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_skippy" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "skippy"
|
||||||
|
value = "204.110.191.8"
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_ha" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "ha"
|
||||||
|
value = "q1l09qiycnaagngmjsg1qas0rhqcfoou.ui.nabu.casa"
|
||||||
|
type = "CNAME"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_mx1" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = ""
|
||||||
|
priority = 10
|
||||||
|
value = "mail.w5isp.com"
|
||||||
|
type = "MX"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_txt" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = ""
|
||||||
|
value = "v=spf1 mx a ip4:204.110.191.5 ~all"
|
||||||
|
type = "TXT"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
# DKIM record
|
||||||
|
resource "dnsimple_zone_record" "w5isp_dkim" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "dkim._domainkey"
|
||||||
|
value = "v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxti2t8TvzIqKF9BpKn3rQExKg3sS1SyQuwtQgL0r/ELEJ0D9cKU/iM+eB1ROJctKHoMqKDJoRCMP6eibFcgq2kLKqf+aceEOIBx2OK2WCXML+CNqQZA6yO+A8/Jq7iFZPq8D5FmOoxbwRZkso7CkSennSz/+F7nBPI/OfyEiiI4xJzWH3t8SaAkkcy46O+1K0iCkTpsthon7E2PHa3SPkrjbep/5NImTJLK5LuffiLJtLsiK+73mvsAYCDmrNxPTaDjXkj0TWdKl/d/TnlVJl+YloqWIDt/7LtZQM0C7GZ9flIr7z9hHpSWERXAA5Gj5NQ0/hcY3nF4dPoqWs3VeeQIDAQAB"
|
||||||
|
type = "TXT"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_g" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "g"
|
||||||
|
value = "204.110.191.5"
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_truck" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "truck"
|
||||||
|
value = "g.w5isp.com."
|
||||||
|
type = "CNAME"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_sendgrid1" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "em40"
|
||||||
|
value = "u177982.wl233.sendgrid.net"
|
||||||
|
type = "CNAME"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_sendgrid2" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "s1._domainkey"
|
||||||
|
value = "s1.domainkey.u177982.wl233.sendgrid.net."
|
||||||
|
type = "CNAME"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_sendgrid3" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "s2._domainkey"
|
||||||
|
value = "s2.domainkey.u177982.wl233.sendgrid.net."
|
||||||
|
type = "CNAME"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_dmarc" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "_dmarc"
|
||||||
|
value = "v=DMARC1; p=quarantine; rua=mailto:postmaster@w5isp.com; ruf=mailto:postmaster@w5isp.com; fo=1"
|
||||||
|
type = "TXT"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
# Mail server
|
||||||
|
resource "dnsimple_zone_record" "w5isp_mail" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "mail"
|
||||||
|
value = "204.110.191.5"
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_sync" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "sync"
|
||||||
|
value = "204.110.191.216"
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_log" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "log"
|
||||||
|
value = "g.w5isp.com"
|
||||||
|
type = "CNAME"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_autodiscover" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "autodiscover"
|
||||||
|
value = "mail.w5isp.com"
|
||||||
|
type = "CNAME"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_autodiscover_srv" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "_autodiscover._tcp"
|
||||||
|
value = "0 443 mail.w5isp.com"
|
||||||
|
type = "SRV"
|
||||||
|
priority = 0
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_autoconfig" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "autoconfig"
|
||||||
|
value = "mail.w5isp.com"
|
||||||
|
type = "CNAME"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_n8n" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "n8n"
|
||||||
|
value = "204.110.191.2" # Traefik ingress on k3s cluster
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_nodered" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "nodered"
|
||||||
|
value = "204.110.191.2" # Node-RED via Traefik on k3s cluster
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_headscale" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "headscale"
|
||||||
|
value = "66.206.18.166"
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_hs" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "hs"
|
||||||
|
value = "66.206.18.166"
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_dokku" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "dokku"
|
||||||
|
value = "204.110.191.218"
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "dnsimple_zone_record" "w5isp_camper" {
|
||||||
|
zone_name = "w5isp.com"
|
||||||
|
name = "camper"
|
||||||
|
value = "skippy.w5isp.com."
|
||||||
|
type = "CNAME"
|
||||||
|
ttl = 3600
|
||||||
|
}
|
||||||
|
|
@ -37,15 +37,10 @@ provider "porkbun" {
|
||||||
secret_api_key = var.prokbun_secret_api_key
|
secret_api_key = var.prokbun_secret_api_key
|
||||||
}
|
}
|
||||||
|
|
||||||
provider "powerdns" {
|
# provider "powerdns" {
|
||||||
api_key = var.pdns_api_key
|
# api_key = var.pdns_api_key
|
||||||
server_url = var.pdns_server_url
|
# server_url = var.pdns_server_url
|
||||||
}
|
# }
|
||||||
|
|
||||||
provider "vultr" {
|
|
||||||
# API key should be set via VULTR_KEY environment variable
|
|
||||||
api_key = var.vultr_api_key
|
|
||||||
}
|
|
||||||
|
|
||||||
provider "cloudflare" {
|
provider "cloudflare" {
|
||||||
# API token is read from CLOUDFLARE_API_TOKEN environment variable
|
# API token is read from CLOUDFLARE_API_TOKEN environment variable
|
||||||
|
|
@ -58,3 +53,9 @@ provider "cloudflare" {
|
||||||
# password = var.proxmox_password
|
# password = var.proxmox_password
|
||||||
# insecure = var.proxmox_tls_insecure
|
# insecure = var.proxmox_tls_insecure
|
||||||
# }
|
# }
|
||||||
|
|
||||||
|
provider "powerdns" {
|
||||||
|
# alias = "vultr"
|
||||||
|
api_key = var.pdns_vultr_api_key
|
||||||
|
server_url = "http://100.93.123.98:8081"
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,103 +0,0 @@
|
||||||
# Proxmox K3s Control Plane Nodes
|
|
||||||
# resource "proxmox_virtual_environment_vm" "k3s_control" {
|
|
||||||
# count = var.control_plane_count
|
|
||||||
|
|
||||||
# name = "${var.cluster_name}-control-${count.index + 1}"
|
|
||||||
# node_name = var.proxmox_nodes[count.index % length(var.proxmox_nodes)]
|
|
||||||
# vm_id = 1100 + count.index
|
|
||||||
|
|
||||||
# cpu {
|
|
||||||
# cores = var.control_plane_cores
|
|
||||||
# type = "host"
|
|
||||||
# }
|
|
||||||
|
|
||||||
# memory {
|
|
||||||
# dedicated = var.control_plane_memory
|
|
||||||
# }
|
|
||||||
|
|
||||||
# disk {
|
|
||||||
# datastore_id = var.storage_pool
|
|
||||||
# file_id = "${var.storage_pool}:${var.vm_template}"
|
|
||||||
# interface = "scsi0"
|
|
||||||
# size = var.control_plane_disk_size
|
|
||||||
# }
|
|
||||||
|
|
||||||
# network_device {
|
|
||||||
# bridge = var.network_bridge
|
|
||||||
# }
|
|
||||||
|
|
||||||
# operating_system {
|
|
||||||
# type = "l26"
|
|
||||||
# }
|
|
||||||
|
|
||||||
# initialization {
|
|
||||||
# ip_config {
|
|
||||||
# ipv4 {
|
|
||||||
# address = "${cidrhost(var.network_cidr, var.control_plane_ip_start + count.index)}/22"
|
|
||||||
# gateway = var.network_gateway
|
|
||||||
# }
|
|
||||||
# }
|
|
||||||
# user_account {
|
|
||||||
# username = var.ssh_user
|
|
||||||
# keys = [var.ssh_public_key]
|
|
||||||
# }
|
|
||||||
# }
|
|
||||||
|
|
||||||
# lifecycle {
|
|
||||||
# ignore_changes = [
|
|
||||||
# initialization[0].user_data_file_id,
|
|
||||||
# ]
|
|
||||||
# }
|
|
||||||
# }
|
|
||||||
|
|
||||||
# Proxmox K3s Worker Nodes
|
|
||||||
# resource "proxmox_virtual_environment_vm" "k3s_worker" {
|
|
||||||
# count = var.worker_count
|
|
||||||
|
|
||||||
# name = "${var.cluster_name}-worker-${count.index + 1}"
|
|
||||||
# node_name = var.proxmox_nodes[count.index % length(var.proxmox_nodes)]
|
|
||||||
# vm_id = 1200 + count.index
|
|
||||||
|
|
||||||
# cpu {
|
|
||||||
# cores = var.worker_cores
|
|
||||||
# type = "host"
|
|
||||||
# }
|
|
||||||
|
|
||||||
# memory {
|
|
||||||
# dedicated = var.worker_memory
|
|
||||||
# }
|
|
||||||
|
|
||||||
# disk {
|
|
||||||
# datastore_id = var.storage_pool
|
|
||||||
# file_id = "${var.storage_pool}:${var.vm_template}"
|
|
||||||
# interface = "scsi0"
|
|
||||||
# size = var.worker_disk_size
|
|
||||||
# }
|
|
||||||
|
|
||||||
# network_device {
|
|
||||||
# bridge = var.network_bridge
|
|
||||||
# }
|
|
||||||
|
|
||||||
# operating_system {
|
|
||||||
# type = "l26"
|
|
||||||
# }
|
|
||||||
|
|
||||||
# initialization {
|
|
||||||
# ip_config {
|
|
||||||
# ipv4 {
|
|
||||||
# address = "${cidrhost(var.network_cidr, var.worker_ip_start + count.index)}/22"
|
|
||||||
# gateway = var.network_gateway
|
|
||||||
# }
|
|
||||||
# }
|
|
||||||
# user_account {
|
|
||||||
# username = var.ssh_user
|
|
||||||
# keys = [var.ssh_public_key]
|
|
||||||
# }
|
|
||||||
# }
|
|
||||||
|
|
||||||
# lifecycle {
|
|
||||||
# ignore_changes = [
|
|
||||||
# initialization[0].user_data_file_id,
|
|
||||||
# ]
|
|
||||||
# }
|
|
||||||
# }
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# OPTIONAL: Setup SSH tunnel for PowerDNS API access through vpn.vntx.net
|
|
||||||
# This is only needed if you cannot directly reach ns1.vntx.net:8081
|
|
||||||
# This forwards local port 18081 to ns1.vntx.net:8081 via vpn.vntx.net
|
|
||||||
|
|
||||||
TUNNEL_HOST="vpn.vntx.net"
|
|
||||||
LOCAL_PORT="18081"
|
|
||||||
REMOTE_HOST="ns1.vntx.net"
|
|
||||||
REMOTE_PORT="8081"
|
|
||||||
|
|
||||||
echo "Setting up SSH tunnel for PowerDNS API access..."
|
|
||||||
echo "NOTE: Update vars.tf to use pdns_server_url = \"http://localhost:18081\" when using this tunnel"
|
|
||||||
echo "Local port: ${LOCAL_PORT} -> ${TUNNEL_HOST} -> ${REMOTE_HOST}:${REMOTE_PORT}"
|
|
||||||
|
|
||||||
# Kill any existing tunnel on this port
|
|
||||||
pkill -f "ssh.*${LOCAL_PORT}:${REMOTE_HOST}:${REMOTE_PORT}"
|
|
||||||
|
|
||||||
# Create SSH tunnel in background
|
|
||||||
ssh -fN -L ${LOCAL_PORT}:${REMOTE_HOST}:${REMOTE_PORT} ${TUNNEL_HOST}
|
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
echo "SSH tunnel established successfully"
|
|
||||||
echo "PowerDNS API should now be accessible at http://localhost:${LOCAL_PORT}"
|
|
||||||
echo ""
|
|
||||||
echo "Test with: curl -H 'X-API-Key: \$TF_VAR_pdns_api_key' http://localhost:${LOCAL_PORT}/api/v1/servers/localhost"
|
|
||||||
echo ""
|
|
||||||
echo "Run 'tofu plan' or 'tofu apply' now"
|
|
||||||
echo ""
|
|
||||||
echo "To stop tunnel later: pkill -f 'ssh.*${LOCAL_PORT}:${REMOTE_HOST}:${REMOTE_PORT}'"
|
|
||||||
else
|
|
||||||
echo "Failed to establish SSH tunnel"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
BIN
home/terraform/tfplan
Normal file
BIN
home/terraform/tfplan
Normal file
Binary file not shown.
|
|
@ -146,3 +146,9 @@ variable "ssh_public_key" {
|
||||||
type = string
|
type = string
|
||||||
default = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHLyVSEEAEbGZZqwPwEup0XrlTpu3x3iF9ExvvQPA4xN graham@mcintire.me"
|
default = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHLyVSEEAEbGZZqwPwEup0XrlTpu3x3iF9ExvvQPA4xN graham@mcintire.me"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
variable "pdns_vultr_api_key" {
|
||||||
|
description = "PowerDNS API key"
|
||||||
|
type = string
|
||||||
|
default = "eyyMkv7dpDE0gQz1N2FeyUWGRa9FBHGcqcdSCMaaoe"
|
||||||
|
}
|
||||||
|
|
|
||||||
BIN
home/terraform/w5isp.tfplan
Normal file
BIN
home/terraform/w5isp.tfplan
Normal file
Binary file not shown.
Loading…
Add table
Reference in a new issue