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