mirror of
https://github.com/gensokyo-zone/infrastructure.git
synced 2026-02-09 12:29:19 -08:00
feat(tf): generate records
This commit is contained in:
parent
9cc471e2dc
commit
43ccdaac9a
8 changed files with 266 additions and 25 deletions
|
|
@ -4,6 +4,8 @@ module "reisen_system_records" {
|
|||
zone_id = cloudflare_zone.gensokyo-zone_zone.id
|
||||
zone_zone = cloudflare_zone.gensokyo-zone_zone.zone
|
||||
local_v4 = "10.1.1.40"
|
||||
int_v4 = "10.9.1.2"
|
||||
int_v6 = "fd0c::2"
|
||||
}
|
||||
|
||||
module "hakurei_system_records" {
|
||||
|
|
@ -11,10 +13,9 @@ module "hakurei_system_records" {
|
|||
name = "hakurei"
|
||||
zone_id = cloudflare_zone.gensokyo-zone_zone.id
|
||||
zone_zone = cloudflare_zone.gensokyo-zone_zone.zone
|
||||
net_data = local.proxmox_reisen_systems.hakurei.network
|
||||
tailscale_v4 = "100.71.65.59"
|
||||
tailscale_v6 = "fd7a:115c:a1e0::9187:413b"
|
||||
local_v4 = "10.1.1.41"
|
||||
local_v6 = "fd0a::be24:11ff:fec4:66a7"
|
||||
local_subdomains = [
|
||||
"prox",
|
||||
"id",
|
||||
|
|
@ -49,9 +50,9 @@ module "reimu_system_records" {
|
|||
name = "reimu"
|
||||
zone_id = cloudflare_zone.gensokyo-zone_zone.id
|
||||
zone_zone = cloudflare_zone.gensokyo-zone_zone.zone
|
||||
net_data = local.proxmox_reisen_systems.reimu.network
|
||||
tailscale_v4 = "100.113.253.48"
|
||||
tailscale_v6 = "fd7a:115c:a1e0::f1b1:fd30"
|
||||
local_v6 = "fd0a::be24:11ff:fec4:66a8"
|
||||
local_subdomains = [
|
||||
"nfs",
|
||||
]
|
||||
|
|
@ -62,8 +63,7 @@ module "keycloak_system_records" {
|
|||
name = "keycloak"
|
||||
zone_id = cloudflare_zone.gensokyo-zone_zone.id
|
||||
zone_zone = cloudflare_zone.gensokyo-zone_zone.zone
|
||||
local_v4 = "10.1.1.48"
|
||||
local_v6 = "fd0a::be24:11ff:fec4:66ac"
|
||||
net_data = local.proxmox_reisen_systems.keycloak.network
|
||||
}
|
||||
|
||||
module "utsuho_system_records" {
|
||||
|
|
@ -71,8 +71,7 @@ module "utsuho_system_records" {
|
|||
name = "utsuho"
|
||||
zone_id = cloudflare_zone.gensokyo-zone_zone.id
|
||||
zone_zone = cloudflare_zone.gensokyo-zone_zone.zone
|
||||
local_v4 = "10.1.1.38"
|
||||
local_v6 = "fd0a::be24:11ff:fec4:66a6"
|
||||
net_data = local.proxmox_reisen_systems.utsuho.network
|
||||
}
|
||||
|
||||
module "aya_system_records" {
|
||||
|
|
@ -80,10 +79,9 @@ module "aya_system_records" {
|
|||
name = "aya"
|
||||
zone_id = cloudflare_zone.gensokyo-zone_zone.id
|
||||
zone_zone = cloudflare_zone.gensokyo-zone_zone.zone
|
||||
net_data = local.proxmox_reisen_systems.aya.network
|
||||
tailscale_v4 = "100.109.213.94"
|
||||
tailscale_v6 = "fd7a:115c:a1e0::eaed:d55e"
|
||||
local_v4 = "10.1.1.47"
|
||||
local_v6 = "fd0a::be24:11ff:fec4:66a9"
|
||||
local_subdomains = [
|
||||
"nixbld",
|
||||
]
|
||||
|
|
@ -94,10 +92,9 @@ module "tewi_system_records" {
|
|||
name = "tei"
|
||||
zone_id = cloudflare_zone.gensokyo-zone_zone.id
|
||||
zone_zone = cloudflare_zone.gensokyo-zone_zone.zone
|
||||
net_data = local.proxmox_reisen_systems.tei.network
|
||||
tailscale_v4 = "100.74.104.29"
|
||||
tailscale_v6 = "fd7a:115c:a1e0::fd8a:681d"
|
||||
local_v4 = "10.1.1.39"
|
||||
local_v6 = "fd0a::be24:11ff:fecc:6657"
|
||||
local_subdomains = [
|
||||
"mqtt",
|
||||
"postgresql",
|
||||
|
|
@ -109,8 +106,7 @@ module "mediabox_system_records" {
|
|||
name = "mediabox"
|
||||
zone_id = cloudflare_zone.gensokyo-zone_zone.id
|
||||
zone_zone = cloudflare_zone.gensokyo-zone_zone.zone
|
||||
local_v4 = "10.1.1.44"
|
||||
local_v6 = "fd0a::be24:11ff:fe34:f4a8"
|
||||
net_data = local.proxmox_reisen_systems.mediabox.network
|
||||
local_subdomains = [
|
||||
"plex",
|
||||
]
|
||||
|
|
@ -121,7 +117,7 @@ module "litterbox_system_records" {
|
|||
name = "litterbox"
|
||||
zone_id = cloudflare_zone.gensokyo-zone_zone.id
|
||||
zone_zone = cloudflare_zone.gensokyo-zone_zone.zone
|
||||
local_v6 = "fd0a::be24:11ff:fec4:66ab"
|
||||
net_data = local.proxmox_reisen_systems.litterbox.network
|
||||
}
|
||||
|
||||
module "idp_system_records" {
|
||||
|
|
@ -129,8 +125,7 @@ module "idp_system_records" {
|
|||
name = "idp"
|
||||
zone_id = cloudflare_zone.gensokyo-zone_zone.id
|
||||
zone_zone = cloudflare_zone.gensokyo-zone_zone.zone
|
||||
local_v4 = "10.1.1.46"
|
||||
local_v6 = "fd0a::be24:11ff:fe3d:3991"
|
||||
net_data = local.proxmox_reisen_systems.freeipa.network
|
||||
}
|
||||
|
||||
module "kubernetes_system_records" {
|
||||
|
|
@ -138,7 +133,7 @@ module "kubernetes_system_records" {
|
|||
name = "kubernetes"
|
||||
zone_id = cloudflare_zone.gensokyo-zone_zone.id
|
||||
zone_zone = cloudflare_zone.gensokyo-zone_zone.zone
|
||||
local_v6 = "fd0a::be24:11ff:fe49:fedc"
|
||||
net_data = local.proxmox_reisen_systems.kuwubernetes.network
|
||||
}
|
||||
|
||||
module "freepbx_system_records" {
|
||||
|
|
@ -146,7 +141,7 @@ module "freepbx_system_records" {
|
|||
name = "freepbx"
|
||||
zone_id = cloudflare_zone.gensokyo-zone_zone.id
|
||||
zone_zone = cloudflare_zone.gensokyo-zone_zone.zone
|
||||
local_v6 = "fd0a::be24:11ff:fe33:1904"
|
||||
net_data = local.proxmox_reisen_systems.freepbx.network
|
||||
}
|
||||
|
||||
module "kitchencam_system_records" {
|
||||
|
|
|
|||
|
|
@ -16,7 +16,8 @@ locals {
|
|||
proxmox_reisen_udev_dri = file("${path.root}/../systems/reisen/udev.90-dri.rules")
|
||||
proxmox_reisen_udev_z2m = file("${path.root}/../systems/reisen/udev.90-z2m.rules")
|
||||
|
||||
proxmox_reisen_users = jsondecode(file("${path.root}/../systems/reisen/users.json"))
|
||||
proxmox_reisen_users = jsondecode(file("${path.root}/../systems/reisen/users.json"))
|
||||
proxmox_reisen_systems = jsondecode(file("${path.root}/../systems/reisen/systems.json"))
|
||||
}
|
||||
|
||||
resource "terraform_data" "proxmox_reisen_etc" {
|
||||
|
|
|
|||
|
|
@ -10,6 +10,15 @@ variable "name" {
|
|||
type = string
|
||||
}
|
||||
|
||||
variable "net_data" {
|
||||
type = map(map(any))
|
||||
default = {
|
||||
local = null
|
||||
int = null
|
||||
tail = null
|
||||
}
|
||||
}
|
||||
|
||||
variable "tailscale_name" {
|
||||
type = string
|
||||
default = null
|
||||
|
|
@ -25,6 +34,21 @@ variable "tailscale_v6" {
|
|||
default = null
|
||||
}
|
||||
|
||||
variable "int_name" {
|
||||
type = string
|
||||
default = null
|
||||
}
|
||||
|
||||
variable "int_v4" {
|
||||
type = string
|
||||
default = null
|
||||
}
|
||||
|
||||
variable "int_v6" {
|
||||
type = string
|
||||
default = null
|
||||
}
|
||||
|
||||
variable "local_name" {
|
||||
type = string
|
||||
default = null
|
||||
|
|
@ -57,20 +81,39 @@ variable "global_v6" {
|
|||
|
||||
locals {
|
||||
local_name = coalesce(var.local_name, "${var.name}.local")
|
||||
local_net = coalesce(var.net_data.local, local.empty_net)
|
||||
local_v4 = coalesce(var.local_v4, local.local_net.address4, local.empty_address)
|
||||
local_v6 = coalesce(var.local_v6, local.local_net.address6, local.empty_address)
|
||||
int_name = coalesce(var.int_name, "${var.name}.int")
|
||||
int_net = coalesce(var.net_data.int, local.empty_net)
|
||||
int_v4 = coalesce(var.int_v4, local.int_net.address4, local.empty_address)
|
||||
int_v6 = coalesce(var.int_v6, local.int_net.address6, local.empty_address)
|
||||
tailscale_name = coalesce(var.tailscale_name, "${var.name}.tail")
|
||||
tailscale_net = coalesce(var.net_data.tail, local.empty_net)
|
||||
tailscale_v4 = coalesce(var.tailscale_v4, local.tailscale_net.address4, local.empty_address)
|
||||
tailscale_v6 = coalesce(var.tailscale_v6, local.tailscale_net.address6, local.empty_address)
|
||||
global_name = coalesce(var.global_name, var.name)
|
||||
|
||||
has_tailscale = var.tailscale_v4 != null || var.tailscale_v6 != null
|
||||
empty_address = "EMPTY"
|
||||
empty_net = {
|
||||
address4 = null
|
||||
address6 = null
|
||||
}
|
||||
|
||||
a_records = [
|
||||
{
|
||||
name = local.local_name,
|
||||
value = var.local_v4,
|
||||
value = local.local_v4,
|
||||
},
|
||||
{
|
||||
name = local.global_name,
|
||||
value = var.global_v4,
|
||||
},
|
||||
{
|
||||
name = local.int_name,
|
||||
value = local.int_v4,
|
||||
},
|
||||
{
|
||||
name = local.tailscale_name,
|
||||
value = var.tailscale_v4,
|
||||
|
|
@ -80,12 +123,16 @@ locals {
|
|||
aaaa_records = [
|
||||
{
|
||||
name = local.local_name,
|
||||
value = var.local_v6,
|
||||
value = local.local_v6,
|
||||
},
|
||||
{
|
||||
name = local.global_name,
|
||||
value = var.global_v6,
|
||||
},
|
||||
{
|
||||
name = local.int_name,
|
||||
value = local.int_v6,
|
||||
},
|
||||
{
|
||||
name = local.tailscale_name,
|
||||
value = var.tailscale_v6,
|
||||
|
|
@ -94,7 +141,7 @@ locals {
|
|||
}
|
||||
|
||||
resource "cloudflare_record" "a_records" {
|
||||
for_each = { for i, a in local.a_records : a.name => i if a.value != null }
|
||||
for_each = { for i, a in local.a_records : a.name => i if a.value != null && a.value != local.empty_address }
|
||||
name = local.a_records[each.value].name
|
||||
proxied = false
|
||||
ttl = 3600
|
||||
|
|
@ -104,7 +151,7 @@ resource "cloudflare_record" "a_records" {
|
|||
}
|
||||
|
||||
resource "cloudflare_record" "aaaa_records" {
|
||||
for_each = { for i, aaaa in local.aaaa_records : aaaa.name => i if aaaa.value != null }
|
||||
for_each = { for i, aaaa in local.aaaa_records : aaaa.name => i if aaaa.value != null && aaaa.value != local.empty_address }
|
||||
name = local.aaaa_records[each.value].name
|
||||
proxied = false
|
||||
ttl = 3600
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue