Files
rootnode-academy/infra/terraform/variables.tf
T
ced4568 cbf81b09e7 feat(proxmox): Proxmox VM template + Terraform/OpenTofu VM creation
Manual, documented bare-metal Proxmox install + cloud-init template build
(deliberately not automated — a fragile one-time step). Terraform/OpenTofu
config creates rn-platform-01/rn-lab-host-01 from that template via the
bpg/proxmox provider, with configurable (not hardcoded) VM sizing.

Validated: tofu fmt, tofu init -backend=false (real provider download),
tofu validate -> Success. No paid state backend required (local state).
2026-08-18 17:12:55 -05:00

67 lines
2.3 KiB
Terraform

variable "proxmox_api_url" {
description = "e.g. https://proxmox.example.internal:8006/api2/json"
type = string
}
variable "proxmox_api_token" {
description = "Proxmox API token (user@realm!tokenid=uuid) — never committed, see terraform.tfvars.example"
type = string
sensitive = true
}
variable "proxmox_tls_insecure" {
description = "Set true only if the Proxmox host uses a self-signed cert with no CA to trust"
type = bool
default = false
}
variable "proxmox_node" {
description = "Proxmox node name (e.g. 'pve')"
type = string
}
variable "vm_template_name" {
description = "Name of the pre-built cloud-init Ubuntu 22.04 template (see infra/terraform/README.md prerequisites)"
type = string
default = "ubuntu-22.04-cloudinit"
}
variable "vm_disk_datastore" {
description = "Proxmox storage/datastore for VM disks — set once real disk layout is decided (docs/PHASE4_PRODUCTION_INFRASTRUCTURE.md §4)"
type = string
default = "local-zfs"
}
variable "ssh_public_key" {
description = "Public key injected via cloud-init for the rootnode-deploy user"
type = string
}
variable "management_cidr" {
description = "Same value as infra/ansible/group_vars/production.yml's management_cidr — used for the VM firewall's SSH allow rule at the Proxmox level too, if managed there"
type = string
}
# ── rn-platform-01 sizing — baseline/recommended/max-growth (Phase 4 §3) ──────────────────
variable "platform_vm" {
description = "rn-platform-01 sizing. 'baseline' is the default; bump via terraform.tfvars once real hardware/load data exists."
type = object({
cores = number
memory = number # MB
disk_gb = number
})
default = {
cores = 4
memory = 16384
disk_gb = 100
}
}
# ── rn-lab-host-01 sizing — majority of host resources, per the Phase 4 spec ───────────────
variable "lab_host_vm" {
description = "rn-lab-host-01 sizing. Deliberately NOT a final number — see docs/CAPACITY_PLANNING.md; this default is a conservative starting point for a 16c/32t/128GB class host, not a target."
type = object({
cores = number
memory = number # MB
disk_gb = number
})
default = {
cores = 24
memory = 98304
disk_gb = 500
}
}