infra updates

This commit is contained in:
Graham McIntire 2025-12-13 15:38:02 -06:00
parent 0edb581bd5
commit 6afa79fe7f
No known key found for this signature in database
16 changed files with 1506 additions and 1394 deletions

View file

@ -66,3 +66,8 @@ reboot:
qc-web:
$(ANSIBLE_CMD) -l qc_web -t caddy general.yml
install-collections:
ansible-galaxy collection install -r requirements.yml --force
ansible-galaxy role install -r roles/requirements.yml --force
./scripts/fix-deprecated-imports.sh

View file

@ -17,6 +17,10 @@ fi
# Install required collections
echo "Installing Ansible collections..."
ansible-galaxy collection install -r requirements.yml
echo "Fixing deprecated imports in collections..."
./scripts/fix-deprecated-imports.sh
echo "Fixing deprecated imports in collections..."
./scripts/fix-deprecated-imports.sh
# Step 1: Create VM template
echo "Step 1: Creating Debian 12 cloud-init template on Proxmox..."

View file

@ -16,7 +16,8 @@ monitor.vntx.net
[home_servers]
skippy.w5isp.com
sync.w5isp.com ansible_host=204.110.191.216
g.w5isp.com
g.w5isp.com ansible_host=204.110.191.5
dokku.w5isp.com
camper
[k3s_servers]
@ -28,7 +29,7 @@ camper
sync.w5isp.com
[caddy_servers]
g.w5isp.com
g.w5isp.com ansible_host=204.110.191.5
skippy.w5isp.com
[syncthing_servers]

View file

@ -86,6 +86,10 @@
- name: Tailscale
hosts: tailscale_home
become: true
gather_facts: true
vars:
inject_facts_as_vars: false
roles:
- role: artis3n.tailscale
vars:

View file

@ -1,13 +1,15 @@
---
collections:
# Use latest versions - minimum versions ensure compatibility
- name: community.general
version: ">=8.0.0"
version: ">=12.0.0" # Updated from >=8.0.0 - current: 12.1.0
- name: ansible.posix
version: ">=2.0.0" # Added version constraint - current: 2.1.0
- name: kubernetes.core
version: ">=2.4.0"
version: ">=6.0.0" # Updated from >=2.4.0 - current: 6.2.0
roles:
- name: geerlingguy.docker
version: "6.1.0"
version: ">=6.1.0" # Changed to >= to allow updates
- name: geerlingguy.kubernetes
version: "8.0.0" # This role supports K8s 1.30+
version: ">=8.0.0" # Changed to >= to allow updates - supports K8s 1.30+

View file

@ -7,7 +7,7 @@ admin_group_map:
RedHat: wheel
Alpine: wheel
admin_group: "{{ admin_group_map.get(ansible_os_family, 'sudo') }}"
admin_group: "{{ admin_group_map.get(ansible_facts['os_family'], 'sudo') }}"
base_common_packages:
- git

View file

@ -4,17 +4,17 @@
# Initial system information
- name: Show hostname
debug:
msg: "{{ ansible_hostname }}"
msg: "{{ ansible_facts['hostname'] }}"
- name: Show IPv4 address
debug:
msg: "{{ ansible_default_ipv4.address }}"
when: ansible_default_ipv4.address is defined
msg: "{{ ansible_facts['default_ipv4']['address'] }}"
when: ansible_facts['default_ipv4']['address'] is defined
- name: Show IPv6 address
debug:
msg: "{{ ansible_default_ipv6.address }}"
when: ansible_default_ipv6.address is defined
msg: "{{ ansible_facts['default_ipv6']['address'] }}"
when: ansible_facts['default_ipv6']['address'] is defined
# Base package installation
- import_tasks: packages.yml
@ -37,12 +37,12 @@
# OS-specific configurations
- include_role:
name: almalinux
when: ansible_os_family == "RedHat"
when: ansible_facts['os_family'] == "RedHat"
- include_role:
name: debian
when: ansible_os_family == "Debian"
when: ansible_facts['os_family'] == "Debian"
- include_role:
name: alpine
when: ansible_os_family == "Alpine"
when: ansible_facts['os_family'] == "Alpine"

View file

@ -3,8 +3,8 @@
ansible.builtin.set_fact:
base_packages_combined: >-
{{ (base_common_packages
+ base_packages_by_os_family.get(ansible_os_family, [])
+ base_packages_by_distribution.get(ansible_distribution, [])) | unique }}
+ base_packages_by_os_family.get(ansible_facts['os_family'], [])
+ base_packages_by_distribution.get(ansible_facts['distribution'], [])) | unique }}
tags:
- packages
- common

View file

@ -1,4 +1,6 @@
- src: graylog2.graylog
- src: caddy_ansible.caddy_ansible
- src: m4rcu5nl.zerotier-one
- src: bertvv.bind
- src: https://github.com/artis3n/tailscale.git
version: v5.0.1
name: artis3n.tailscale

View file

@ -0,0 +1,44 @@
#!/bin/bash
# Script to fix deprecated ansible.module_utils._text imports in collections
# This replaces the deprecated imports with the new recommended imports
set -e
COLLECTIONS_DIR="${HOME}/.ansible/collections/ansible_collections"
# Function to fix imports in a file
fix_imports() {
local file="$1"
# Replace: from ansible.module_utils._text import to_native
# With: from ansible.module_utils.common.text.converters import to_native
sed -i '' \
-e "s/from ansible.module_utils._text import to_native/from ansible.module_utils.common.text.converters import to_native/g" \
-e "s/from ansible.module_utils._text import to_text/from ansible.module_utils.common.text.converters import to_text/g" \
-e "s/from ansible.module_utils._text import to_bytes/from ansible.module_utils.common.text.converters import to_bytes/g" \
-e "s/from ansible.module_utils._text import to_native, to_text/from ansible.module_utils.common.text.converters import to_native, to_text/g" \
-e "s/from ansible.module_utils._text import to_bytes, to_native/from ansible.module_utils.common.text.converters import to_bytes, to_native/g" \
-e "s/from ansible.module_utils._text import to_bytes, to_text/from ansible.module_utils.common.text.converters import to_bytes, to_text/g" \
-e "s/from ansible.module_utils._text import to_native, to_text/from ansible.module_utils.common.text.converters import to_native, to_text/g" \
"$file"
}
# Find all Python files with deprecated imports
echo "Searching for files with deprecated imports..."
FILES=$(grep -r "from ansible.module_utils._text import" "$COLLECTIONS_DIR" --include="*.py" 2>/dev/null | cut -d: -f1 | sort -u)
if [ -z "$FILES" ]; then
echo "No files found with deprecated imports."
exit 0
fi
echo "Found $(echo "$FILES" | wc -l | tr -d ' ') files to fix."
# Fix each file
for file in $FILES; do
echo "Fixing: $file"
fix_imports "$file"
done
echo "Done! Fixed all deprecated imports."

View file

@ -2,25 +2,25 @@
# Manual edits may be lost in future updates.
provider "registry.opentofu.org/cloudflare/cloudflare" {
version = "4.52.2"
version = "4.52.5"
constraints = "~> 4.0"
hashes = [
"h1:nFaCutAjRKkGsRsRH0kMdJCZMslrdAHaJI1XxAgkjPo=",
"zh:08238aa3fdcfb89697c84c7777004eb26b069c17117bef75b0e70aec5019dea2",
"zh:12d7f25f8722f941bca10e30fc8cdea470d92f83fbdfb7d1476df6612895c1d1",
"zh:236865850d06bb790b8d6fa579eee5866ef92ea8dd9f1c836a5946eb18195e0b",
"zh:52ae35d6260609931402d44d3d946384c84c5b5ad25e3b5cc5b6644765e1b25c",
"zh:67be160b7c3277fbfaa595aff4186f74067af0735f613f4fe037dabe58fc2e5f",
"zh:6e1492149084b277be4f65cd3a0c08794ba63b42211148575c709187635047d8",
"zh:716c00b62ac6c30fb9ee24d69d89fa6a6465e272d1caf5adb3c9b6b43a152e6b",
"zh:7c3b6cbe12d73727e18606901875541b1f0f56ca506400434399813ea9b56686",
"zh:7cd7806cc9eb62475b6c0c2bf7520a1ff204b96ce62390941d474cbaa480207b",
"h1:+rfzF+16ZcWZWnTyW/p1HHTzYbPKX8Zt2nIFtR/+f+E=",
"zh:1a3400cb38863b2585968d1876706bcfc67a148e1318a1d325c6c7704adc999b",
"zh:4c5062cb9e9da1676f06ae92b8370186d98976cc4c7030d3cd76df12af54282a",
"zh:52110f493b5f0587ef77a1cfd1a67001fd4c617b14c6502d732ab47352bdc2f7",
"zh:5aa536f9eaeb43823aaf2aa80e7d39b25ef2b383405ed034aa16a28b446a9238",
"zh:5cc39459a1c6be8a918f17054e4fbba573825ed5597dcada588fe99614d98a5b",
"zh:629ae6a7ba298815131da826474d199312d21cec53a4d5ded4fa56a692e6f072",
"zh:719cc7c75dc1d3eb30c22ff5102a017996d9788b948078c7e1c5b3446aeca661",
"zh:8698635a3ca04383c1e93b21d6963346bdae54d27177a48e4b1435b7f731731c",
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
"zh:98bca149a0535cbb8bdc5fe1c173237dde4b184f085bb7d592f5bf1842ff293e",
"zh:b1b8b0161f06f1c013d8697deee2d92e44025e1218262ea4fb071f6864304629",
"zh:cb857d44e4f707be2bed0d8eb2178b9e7a7422e5416e92929da7ec7c2c0d7451",
"zh:d34490872248369c8da4ff77f96fe089c4bae6fb1b17632e76c6b115726058db",
"zh:f993f7dafaa3c6a4f9ff8b50af0af74357d2e2b83526d5f18a788bdbd4b41615",
"zh:8a9993f1dcadf1dd6ca43b23348abe374605d29945a2fafc07fb3457644e6a54",
"zh:b1b9a1e6bcc24d5863a664a411d2dc906373ae7a2399d2d65548ce7377057852",
"zh:b270184cdeec277218e84b94cb136fead753da717f9b9dc378e51907f3f00bb0",
"zh:dff2bc10071210181726ce270f954995fe42c696e61e2e8f874021fed02521e5",
"zh:e8e87b40b6a87dc097b0fdc20d3f725cec0d82abc9cc3755c1f89f8f6e8b0036",
"zh:ee964a6573d399a5dd22ce328fb38ca1207797a02248f14b2e4913ee390e7803",
]
}

View file

@ -1,79 +1,89 @@
resource "dnsimple_zone_record" "manero_root_a_1" {
zone_name = "manero.org"
name = "@"
value = "185.199.108.153"
resource "porkbun_dns_record" "manero_root_a_1" {
domain = "manero.org"
name = ""
content = "185.199.108.153"
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "manero_root_a_2" {
zone_name = "manero.org"
name = "@"
value = "185.199.109.153"
resource "porkbun_dns_record" "manero_root_a_2" {
domain = "manero.org"
name = ""
content = "185.199.109.153"
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "manero_root_a_3" {
zone_name = "manero.org"
name = "@"
value = "185.199.110.153"
resource "porkbun_dns_record" "manero_root_a_3" {
domain = "manero.org"
name = ""
content = "185.199.110.153"
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "manero_root_a_4" {
zone_name = "manero.org"
name = "@"
value = "185.199.111.153"
resource "porkbun_dns_record" "manero_root_a_4" {
domain = "manero.org"
name = ""
content = "185.199.111.153"
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "manero_irc_a" {
zone_name = "manero.org"
resource "porkbun_dns_record" "manero_irc_a" {
domain = "manero.org"
name = "irc"
value = "149.28.242.178"
content = "149.28.242.178"
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "manero_us_a" {
zone_name = "manero.org"
resource "porkbun_dns_record" "manero_us_a" {
domain = "manero.org"
name = "us"
value = "149.28.242.178"
content = "149.28.242.178"
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "manero_us_aaaa" {
zone_name = "manero.org"
resource "porkbun_dns_record" "manero_us_aaaa" {
domain = "manero.org"
name = "us"
value = "2001:19f0:6401:19e6:5400:5ff:fe45:5701"
content = "2001:19f0:6401:19e6:5400:5ff:fe45:5701"
type = "AAAA"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "manero_ca_a" {
zone_name = "manero.org"
resource "porkbun_dns_record" "manero_ca_a" {
domain = "manero.org"
name = "ca"
value = "167.114.209.151"
content = "167.114.209.151"
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "manero_tankfox_a" {
zone_name = "manero.org"
resource "porkbun_dns_record" "manero_tankfox_a" {
domain = "manero.org"
name = "tankfox"
value = "137.184.202.89"
content = "137.184.202.89"
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "manero_404" {
zone_name = "manero.org"
resource "porkbun_dns_record" "manero_404" {
domain = "manero.org"
name = "404"
value = "404.al"
content = "404.al"
type = "CNAME"
ttl = 3600
priority = 0
}

View file

@ -33,7 +33,7 @@ resource "dnsimple_zone_record" "mcintire_cname_test" {
resource "dnsimple_zone_record" "mcintire_mail" {
zone_name = "mcintire.me"
name = "mail"
value = "66.206.18.162"
value = "204.110.191.5"
type = "A"
ttl = 3600
}
@ -70,7 +70,7 @@ resource "dnsimple_zone_record" "mcintire_autoconfig" {
resource "dnsimple_zone_record" "mcintire_spf_mailcow" {
zone_name = "mcintire.me"
name = ""
value = "\"v=spf1 mx a ip4:66.206.18.162 ~all\""
value = "\"v=spf1 mx a ip4:204.110.191.5 ~all\""
type = "TXT"
ttl = 3600
}

View file

@ -75,7 +75,7 @@ resource "powerdns_record" "ptr_records4" {
for_each = {
for i in range(256) : tostring(i) => {
name = "${i}.191.110.204.in-addr.arpa."
record = tostring(i) == "216" ? "mail.w5isp.com." : "${i}.191.client.vntx.net."
record = tostring(i) == "5" ? "mail.w5isp.com." : "${i}.191.client.vntx.net."
}
}

File diff suppressed because it is too large Load diff

View file

@ -1,204 +1,245 @@
resource "dnsimple_zone_record" "w5isp_root" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_root" {
domain = "w5isp.com"
name = ""
value = "66.206.18.162"
content = "204.110.191.5"
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_git" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_git" {
domain = "w5isp.com"
name = "git"
value = "66.206.18.163"
content = "66.206.18.163"
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_home" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_home" {
domain = "w5isp.com"
name = "home"
value = "204.110.191.1"
content = "204.110.191.1"
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_photos" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_photos" {
domain = "w5isp.com"
name = "photos"
value = "204.110.191.8"
content = "204.110.191.8"
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_skippy" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_skippy" {
domain = "w5isp.com"
name = "skippy"
value = "204.110.191.8"
content = "204.110.191.8"
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_ha" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_ha" {
domain = "w5isp.com"
name = "ha"
value = "q1l09qiycnaagngmjsg1qas0rhqcfoou.ui.nabu.casa"
content = "q1l09qiycnaagngmjsg1qas0rhqcfoou.ui.nabu.casa"
type = "CNAME"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_mx1" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_mx1" {
domain = "w5isp.com"
name = ""
priority = 10
value = "mail.w5isp.com"
content = "mail.w5isp.com"
type = "MX"
ttl = 3600
}
resource "dnsimple_zone_record" "w5isp_txt" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_txt" {
domain = "w5isp.com"
name = ""
value = "v=spf1 mx a ip4:66.206.18.162 ~all"
content = "v=spf1 mx a ip4:204.110.191.5 ~all"
type = "TXT"
ttl = 3600
priority = 0
}
# DKIM record
resource "dnsimple_zone_record" "w5isp_dkim" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_dkim" {
domain = "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"
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"
type = "TXT"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_g" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_g" {
domain = "w5isp.com"
name = "g"
value = "66.206.18.162"
content = "204.110.191.5"
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_truck" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_truck" {
domain = "w5isp.com"
name = "truck"
value = "g.w5isp.com."
content = "g.w5isp.com."
type = "CNAME"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_sendgrid1" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_sendgrid1" {
domain = "w5isp.com"
name = "em40"
value = "u177982.wl233.sendgrid.net"
content = "u177982.wl233.sendgrid.net"
type = "CNAME"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_sendgrid2" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_sendgrid2" {
domain = "w5isp.com"
name = "s1._domainkey"
value = "s1.domainkey.u177982.wl233.sendgrid.net."
content = "s1.domainkey.u177982.wl233.sendgrid.net."
type = "CNAME"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_sendgrid3" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_sendgrid3" {
domain = "w5isp.com"
name = "s2._domainkey"
value = "s2.domainkey.u177982.wl233.sendgrid.net."
content = "s2.domainkey.u177982.wl233.sendgrid.net."
type = "CNAME"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_dmarc" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_dmarc" {
domain = "w5isp.com"
name = "_dmarc"
value = "v=DMARC1; p=quarantine; rua=mailto:postmaster@w5isp.com; ruf=mailto:postmaster@w5isp.com; fo=1"
content = "v=DMARC1; p=quarantine; rua=mailto:postmaster@w5isp.com; ruf=mailto:postmaster@w5isp.com; fo=1"
type = "TXT"
ttl = 3600
priority = 0
}
# Mail server
resource "dnsimple_zone_record" "w5isp_mail" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_mail" {
domain = "w5isp.com"
name = "mail"
value = "66.206.18.162"
content = "204.110.191.5"
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_sync" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_sync" {
domain = "w5isp.com"
name = "sync"
value = "204.110.191.216"
content = "204.110.191.216"
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_log" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_log" {
domain = "w5isp.com"
name = "log"
value = "g.w5isp.com"
content = "g.w5isp.com"
type = "CNAME"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_autodiscover" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_autodiscover" {
domain = "w5isp.com"
name = "autodiscover"
value = "mail.w5isp.com"
content = "mail.w5isp.com"
type = "CNAME"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_autodiscover_srv" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_autodiscover_srv" {
domain = "w5isp.com"
name = "_autodiscover._tcp"
value = "0 443 mail.w5isp.com"
content = "0 443 mail.w5isp.com"
type = "SRV"
priority = 0
ttl = 3600
}
resource "dnsimple_zone_record" "w5isp_autoconfig" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_autoconfig" {
domain = "w5isp.com"
name = "autoconfig"
value = "mail.w5isp.com"
content = "mail.w5isp.com"
type = "CNAME"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_n8n" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_n8n" {
domain = "w5isp.com"
name = "n8n"
value = "204.110.191.2" # Traefik ingress on k3s cluster
content = "204.110.191.2" # Traefik ingress on k3s cluster
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_nodered" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_nodered" {
domain = "w5isp.com"
name = "nodered"
value = "204.110.191.2" # Node-RED via Traefik on k3s cluster
content = "204.110.191.2" # Node-RED via Traefik on k3s cluster
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_headscale" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_headscale" {
domain = "w5isp.com"
name = "headscale"
value = "66.206.18.166"
content = "66.206.18.166"
type = "A"
ttl = 3600
priority = 0
}
resource "dnsimple_zone_record" "w5isp_hs" {
zone_name = "w5isp.com"
resource "porkbun_dns_record" "w5isp_hs" {
domain = "w5isp.com"
name = "hs"
value = "66.206.18.166"
content = "66.206.18.166"
type = "A"
ttl = 3600
priority = 0
}
resource "porkbun_dns_record" "w5isp_dokku" {
domain = "w5isp.com"
name = "dokku"
content = "204.110.191.218"
type = "A"
ttl = 3600
priority = 0
}
resource "porkbun_dns_record" "w5isp_camper" {
domain = "w5isp.com"
name = "camper"
content = "skippy.w5isp.com."
type = "CNAME"
ttl = 3600
priority = 0
}