# ─── 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" }