Files
home-services/terraform/variables.tf
T
whentimeslows e3c51bb3ae
Deploy home services / deploy-nas1 (push) Has been cancelled
Deploy home services / deploy-rhel1 (push) Has been cancelled
Configure Talos nodes for Longhorn storage
Add the Talos extension image and dedicated user volume configuration, point Longhorn at the mounted disk, and document rebuild and rolling-upgrade steps.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-09 11:22:06 -06:00

81 lines
2.5 KiB
Terraform

variable "cluster_name" {
type = string
description = "Talos cluster name."
default = "home-services"
}
variable "talos_version" {
type = string
description = "Talos version used to generate machine configuration."
default = "v1.14.0"
}
variable "talos_installer_image" {
type = string
description = "Talos Image Factory installer image with iscsi-tools and util-linux-tools extensions. Keep its Talos version aligned with talos_version."
default = "factory.talos.dev/metal-installer/613e1592b2da41ae5e265e8789429f22e121aab91cb4deb6bc3c0b6262961245:v1.14.0"
}
variable "kubernetes_version" {
type = string
description = "Kubernetes version supported by the selected Talos version."
}
variable "install_disk" {
type = string
description = "Disk on every VM where Talos should install itself."
default = "/dev/vda"
}
variable "nodes" {
type = list(object({
name = string
ip = string
role = string
bootstrap = optional(bool, false)
}))
description = "Talos nodes to configure. Exactly one control-plane node must be marked bootstrap."
validation {
condition = (
length(var.nodes) > 0 &&
length(distinct([for node in var.nodes : node.name])) == length(var.nodes) &&
alltrue([for node in var.nodes : contains(["controlplane", "worker"], node.role)]) &&
length([for node in var.nodes : node if node.role == "controlplane"]) > 0 &&
length([for node in var.nodes : node if node.bootstrap]) == 1 &&
alltrue([for node in var.nodes : !node.bootstrap || node.role == "controlplane"])
)
error_message = "nodes must have unique names, use controlplane or worker roles, include a control-plane node, and mark exactly one control-plane node as bootstrap."
}
}
variable "cluster_endpoint" {
type = string
description = "Stable HTTPS endpoint for the Talos and Kubernetes APIs."
}
variable "gitea_repository_url" {
type = string
description = "Git URL Argo CD uses for the GitOps repository."
default = "https://git.sorells.me/whentimeslows/home-services.git"
}
variable "gitea_username" {
type = string
description = "Username for HTTPS Gitea repository access."
default = ""
}
variable "gitea_password" {
type = string
description = "Token or password for HTTPS Gitea repository access."
sensitive = true
default = ""
}
variable "argocd_chart_version" {
type = string
description = "Pinned Argo CD chart version."
default = "7.7.16"
}