e3c51bb3ae
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>
81 lines
2.5 KiB
Terraform
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"
|
|
}
|