Files
Homelab/terraform/projects/kubernetes_vms/variables.tf
2026-09-18 15:37:00 +02:00

135 lines
3.5 KiB
Terraform

variable "proxmox_endpoint" {
description = "Proxmox URL endpoint"
type = string
}
variable "proxmox_api_token" {
description = "Proxmox API token"
type = string
sensitive = true
}
variable "proxmox_ssh_username" {
description = "Proxmox SSH username"
type = string
sensitive = true
}
variable "proxmox_ssh_password" {
description = "Proxmox SSH password"
type = string
sensitive = true
}
variable "vm_attr" {
description = "VM attributes per role. The control-plane role (master) is placed one per node; other roles are packed without a per-node limit."
type = map(object({
ram = number
cpu = number
vlan = number
count = number
}))
default = {
"master" = { ram = 2048, cpu = 2, vlan = 66, count = 3 }
"worker" = { ram = 4096, cpu = 2, vlan = 66, count = 3 }
}
validation {
condition = alltrue([for v in values(var.vm_attr) : v.count >= 1])
error_message = "Each role must deploy at least 1 VM."
}
}
variable "master_count" {
description = "Master role VM count override. null keeps the vm_attr default."
type = number
default = null
validation {
condition = var.master_count == null || var.master_count >= 1
error_message = "master_count must be null or at least 1."
}
}
variable "master_cpu" {
description = "Master role CPU override. null keeps the vm_attr default."
type = number
default = null
validation {
condition = var.master_cpu == null || var.master_cpu >= 1
error_message = "master_cpu must be null or at least 1."
}
}
variable "master_ram" {
description = "Master role RAM override in GiB (converted to MiB internally). null keeps the vm_attr default."
type = number
default = null
validation {
condition = var.master_ram == null || var.master_ram >= 1
error_message = "master_ram must be null or at least 1 GiB."
}
}
variable "master_vlan" {
description = "Master role VLAN override. null keeps the vm_attr default."
type = number
default = null
validation {
condition = var.master_vlan == null || var.master_vlan >= 1
error_message = "master_vlan must be null or at least 1."
}
}
variable "worker_count" {
description = "Worker role VM count override. null keeps the vm_attr default."
type = number
default = null
validation {
condition = var.worker_count == null || var.worker_count >= 1
error_message = "worker_count must be null or at least 1."
}
}
variable "worker_cpu" {
description = "Worker role CPU override. null keeps the vm_attr default."
type = number
default = null
validation {
condition = var.worker_cpu == null || var.worker_cpu >= 1
error_message = "worker_cpu must be null or at least 1."
}
}
variable "worker_ram" {
description = "Worker role RAM override in GiB (converted to MiB internally). null keeps the vm_attr default."
type = number
default = null
validation {
condition = var.worker_ram == null || var.worker_ram >= 1
error_message = "worker_ram must be null or at least 1 GiB."
}
}
variable "worker_vlan" {
description = "Worker role VLAN override. null keeps the vm_attr default."
type = number
default = null
validation {
condition = var.worker_vlan == null || var.worker_vlan >= 1
error_message = "worker_vlan must be null or at least 1."
}
}
variable "vm_env" {
description = "VM environment"
type = string
default = "prod"
}