- 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
72 lines
2.8 KiB
HCL
72 lines
2.8 KiB
HCL
# ─── Provider Authentication ─────────────────────────────────────────────────
|
|
# Passed through from the cluster root module — not declared here since
|
|
# provider config lives in the root module's providers.tf.
|
|
|
|
# ─── Node Identity ───────────────────────────────────────────────────────────
|
|
|
|
variable "hostname" {
|
|
type = string
|
|
description = "Node hostname (e.g., space-mountain). Used as the Proxmox VM name."
|
|
}
|
|
|
|
variable "vm_id" {
|
|
type = number
|
|
description = "Proxmox VM ID. Convention: {third_octet}{fourth_octet:03d} (e.g., 10.1.71.66 → 71066)."
|
|
}
|
|
|
|
variable "node_role" {
|
|
type = string
|
|
description = "Role of the node in the cluster. Used for tagging."
|
|
|
|
validation {
|
|
condition = contains(["controlplane", "worker"], var.node_role)
|
|
error_message = "node_role must be 'controlplane' or 'worker'."
|
|
}
|
|
}
|
|
|
|
# ─── Proxmox Placement ───────────────────────────────────────────────────────
|
|
|
|
variable "target_node" {
|
|
type = string
|
|
description = "Proxmox node to place this VM on (e.g., main-street-usa, tomorrowland, fantasyland)."
|
|
}
|
|
|
|
variable "datastore" {
|
|
type = string
|
|
description = "Proxmox storage pool for the VM disk."
|
|
default = "liberty-tree"
|
|
}
|
|
|
|
# ─── Boot Image ──────────────────────────────────────────────────────────────
|
|
|
|
variable "iso_file_id" {
|
|
type = string
|
|
description = "Proxmox file ID for the Talos ISO (e.g., local:iso/talos-v1.9.5-metal-amd64.iso). Output from proxmox_virtual_environment_download_file."
|
|
}
|
|
|
|
# ─── Hardware ────────────────────────────────────────────────────────────────
|
|
|
|
variable "cpu_cores" {
|
|
type = number
|
|
description = "Number of vCPU cores."
|
|
}
|
|
|
|
variable "memory_mb" {
|
|
type = number
|
|
description = "RAM in megabytes."
|
|
}
|
|
|
|
variable "disk_size" {
|
|
type = number
|
|
description = "OS disk size in gigabytes. Talos manages its own partition layout."
|
|
}
|
|
|
|
# ─── Network ─────────────────────────────────────────────────────────────────
|
|
|
|
variable "bridge" {
|
|
type = string
|
|
description = "Proxmox network bridge."
|
|
default = "vmbr0"
|
|
}
|
|
|