feat(fastpass): Talos cluster provisioning and bootstrap

- Terraform: VM provisioning, Unifi DHCP, Technitium DNS
- talhelper: cluster config for 6-node Talos cluster
- Cilium 1.19.4 CNI with Talos-compatible security context
- docs: city-hall setup guide and bootstrap runbook
This commit is contained in:
2026-05-17 16:08:19 -05:00
parent 9f3ac95d8d
commit 97e9889251
16 changed files with 1205 additions and 0 deletions

View File

@@ -0,0 +1,79 @@
# ─── Proxmox Authentication ──────────────────────────────────────────────────
variable "proxmox_api_url" {
type = string
description = "Proxmox API endpoint URL (e.g., https://fantasyland.local.mk-labs.cloud:8006)."
}
variable "proxmox_api_token" {
type = string
description = "Proxmox API token. Format: user@realm!token-name=token-secret."
sensitive = true
}
# ─── Unifi Authentication ────────────────────────────────────────────────────
variable "unifi_api_url" {
type = string
description = "Unifi controller API URL (e.g., https://10.1.71.1:443)."
}
variable "unifi_username" {
type = string
description = "Unifi controller username."
}
variable "unifi_password" {
type = string
description = "Unifi controller password."
sensitive = true
}
# ─── Technitium DNS Authentication ───────────────────────────────────────────
variable "technitium_url" {
type = string
description = "Technitium DNS server URL (e.g., http://10.1.71.32:5380)."
}
variable "technitium_api_token" {
type = string
description = "Technitium API token. Create under Administration → API Tokens."
sensitive = true
}
# ─── Cluster Configuration ───────────────────────────────────────────────────
variable "cluster_name" {
type = string
description = "Talos cluster name."
default = "fastpass"
}
variable "dns_zone" {
type = string
description = "Internal DNS zone for A record creation."
default = "local.mk-labs.cloud"
}
# ─── ISO Storage ─────────────────────────────────────────────────────────────
variable "iso_datastore" {
type = string
description = "Proxmox datastore for ISO storage. Must be visible to all nodes — use a shared/Ceph-backed datastore, not node-local storage."
default = "templates"
}
# ─── Shared VM Defaults ──────────────────────────────────────────────────────
variable "datastore" {
type = string
description = "Proxmox storage pool for VM disks."
default = "liberty-tree"
}
variable "bridge" {
type = string
description = "Proxmox network bridge."
default = "vmbr0"
}