94 lines
3.0 KiB
HCL
94 lines
3.0 KiB
HCL
variable "kubeconfig_path" {
|
|
type = string
|
|
description = "Kubeconfig used by the Kubernetes provider for Atlas day-zero/declarative resources."
|
|
default = "~/.kube/config"
|
|
}
|
|
|
|
variable "kubeconfig_context" {
|
|
type = string
|
|
description = "Optional kubeconfig context. Leave null to use the kubeconfig current-context."
|
|
default = null
|
|
}
|
|
|
|
variable "default_ssh_user" {
|
|
type = string
|
|
description = "Default SSH user emitted into the generated Ananke inventory fragment."
|
|
default = "atlas"
|
|
}
|
|
|
|
variable "default_ssh_port" {
|
|
type = number
|
|
description = "Default SSH port emitted into the generated Ananke inventory fragment."
|
|
default = 2277
|
|
}
|
|
|
|
variable "default_ssh_config_file" {
|
|
type = string
|
|
description = "Default SSH config file emitted into the generated Ananke inventory fragment."
|
|
default = "/home/atlas/.ssh/config"
|
|
}
|
|
|
|
variable "default_ssh_identity_file" {
|
|
type = string
|
|
description = "Default SSH identity file emitted into the generated Ananke inventory fragment."
|
|
default = "/home/atlas/.ssh/id_ed25519"
|
|
}
|
|
|
|
variable "ananke_inventory_fragment_path" {
|
|
type = string
|
|
description = "Where Terraform writes the generated non-secret Ananke inventory fragment."
|
|
default = "generated/ananke.inventory.yaml"
|
|
}
|
|
|
|
variable "node_label_field_manager" {
|
|
type = string
|
|
description = "Kubernetes server-side apply field manager for Terraform-owned node labels."
|
|
default = "terraform-atlas-node-labels"
|
|
}
|
|
|
|
variable "force_node_label_conflicts" {
|
|
type = bool
|
|
description = "Set true only during a deliberate node-label adoption if Kubernetes field ownership conflicts."
|
|
default = false
|
|
}
|
|
|
|
variable "nodes" {
|
|
type = map(object({
|
|
ip = string
|
|
role = string
|
|
managed = optional(bool, true)
|
|
ignore_unavailable = optional(bool, false)
|
|
ssh_user = optional(string)
|
|
ssh_port = optional(number)
|
|
ssh_config_file = optional(string)
|
|
ssh_identity_file = optional(string)
|
|
labels = optional(map(string), {})
|
|
}))
|
|
description = "Atlas host and Kubernetes node inventory. role is control-plane, worker, or recovery."
|
|
|
|
validation {
|
|
condition = alltrue([
|
|
for node in values(var.nodes) : contains(["control-plane", "worker", "recovery"], node.role)
|
|
])
|
|
error_message = "Each node role must be one of: control-plane, worker, recovery."
|
|
}
|
|
}
|
|
|
|
variable "render_flux_day_zero_manifests" {
|
|
type = bool
|
|
description = "Render day-zero Flux manifests from the existing clusters/atlas/flux-system artifacts."
|
|
default = false
|
|
}
|
|
|
|
variable "apply_flux_day_zero_manifests" {
|
|
type = bool
|
|
description = "Dangerous: apply rendered day-zero Flux manifests with kubectl. Keep false for steady state."
|
|
default = false
|
|
}
|
|
|
|
variable "flux_day_zero_output_path" {
|
|
type = string
|
|
description = "Rendered Flux day-zero manifest path when render_flux_day_zero_manifests is true."
|
|
default = "generated/flux-day-zero.yaml"
|
|
}
|