variable "libvirt_uri" {
description = "libvirt connection URI for the vcloud host (e.g. qemu+ssh://user@host/system). MUST be measured this session, never guessed -- no default."
type = string
}
# maas_api_url / maas_api_key variables are DEFERRED to Stage 3 (DOCFIX-179):
# removed from Stage 1's root because the provider "maas" block that consumed
# them is deferred (see main.tf's note). Re-add both here when Stage 3
# instantiates modules/maas-vm-host. The SENSITIVE maas_api_key MUST return via
# TF_VAR_maas_api_key only -- never a committed file (opentofu/README.md
# "State file handling", DOCFIX-175).
variable "domain_suffix" {
description = "Base domain for per-plane libvirt DNS domains. Anchor value per D-106's naming convention (<service>.omega.<dc>.vr1.cloud.neumatrix.local)."
type = string
default = "cloud.neumatrix.local"
}
variable "underlay_mtu" {
description = "Underlay MTU applied to every plane and mesh-link network. MUST be the Phase-0 MEASURED host L2 MTU (buildout-design Section 3 / D-102) -- do not assume jumbo (9000). No default -- pass explicitly, e.g. via a Phase-0-specific tfvars file once measured."
type = number
}
variable "dc1_pool_path" {
description = "Host filesystem path for DC1's libvirt storage pool. Measured, real path on the vcloud host -- no default."
type = string
}
variable "office1_pool_path" {
description = "Host filesystem path for Office1's libvirt storage pool (MAAS-region/NetBox/GitBucket service-VM disks). Measured, real path on the vcloud host -- no default."
type = string
}
variable "dc2_pool_path" {
description = "Host filesystem path for DC2's libvirt storage pool. Measured, real path on the vcloud host -- no default. NOTE: only DC2's STORAGE POOL is wired (operator ruling 2026-07-10, dc-dc-phase0 Step 5/7). DC2's PLANES stay deferred (Option B) pending NetBox assigning the D-101 supernet -- a storage pool has no address dependency, plane networks do."
type = string
}
variable "dc1_planes" {
description = <<-EOT
DC1's six planes. DC1 INHERITS the DC0 v4 layout UNCHANGED (D-101) --
these CIDRs are copied from scripts/lib-net.sh's PLANE_CIDRS array as it
stood 2026-07-09, not invented here. If lib-net.sh changes, update this
default in the SAME change (it is a second copy of the same fact, not an
independent source -- a future DOCFIX candidate is a generator that keeps
both in sync automatically instead of two hand-maintained copies).
EOT
type = map(object({
cidr = string
}))
default = {
provider-public = { cidr = "10.12.4.0/22" }
metal-admin = { cidr = "10.12.8.0/22" }
metal-internal = { cidr = "10.12.12.0/22" }
data-tenant = { cidr = "10.12.16.0/22" }
storage = { cidr = "10.12.32.0/22" }
replication = { cidr = "10.12.36.0/22" }
}
}
# dc2_planes has NO variable/default here yet, deliberately: DC2's supernet is
# a D-101 OPEN SUB-ITEM ("exact prefixes assigned in NetBox, non-colliding with
# DC1..."), not yet assigned anywhere. Do not add a guessed default -- once
# NetBox assigns it, add a dc2_planes variable shaped exactly like dc1_planes
# above and a matching module "dc2_planes" block in main.tf (see the commented
# skeleton there).