2026-02-28 20:24:55 +00:00
|
|
|
variable "hcloud_token" {
|
|
|
|
|
description = "Hetzner Cloud API token"
|
|
|
|
|
type = string
|
|
|
|
|
sensitive = true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "ssh_public_key" {
|
|
|
|
|
description = "Path to SSH public key"
|
|
|
|
|
type = string
|
|
|
|
|
default = "~/.ssh/id_ed25519.pub"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "ssh_private_key" {
|
|
|
|
|
description = "Path to SSH private key"
|
|
|
|
|
type = string
|
|
|
|
|
default = "~/.ssh/id_ed25519"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "cluster_name" {
|
|
|
|
|
description = "Name of the Kubernetes cluster"
|
|
|
|
|
type = string
|
|
|
|
|
default = "k8s-cluster"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "control_plane_count" {
|
|
|
|
|
description = "Number of control plane nodes"
|
|
|
|
|
type = number
|
|
|
|
|
default = 3
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "control_plane_type" {
|
|
|
|
|
description = "Hetzner server type for control plane"
|
|
|
|
|
type = string
|
|
|
|
|
default = "cx23"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "worker_count" {
|
|
|
|
|
description = "Number of worker nodes"
|
|
|
|
|
type = number
|
|
|
|
|
default = 4
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "worker_type" {
|
|
|
|
|
description = "Hetzner server type for workers"
|
|
|
|
|
type = string
|
|
|
|
|
default = "cx33"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "location" {
|
|
|
|
|
description = "Hetzner datacenter location"
|
|
|
|
|
type = string
|
2026-02-28 22:13:13 +00:00
|
|
|
default = "nbg1"
|
2026-02-28 20:24:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "allowed_ssh_ips" {
|
|
|
|
|
description = "IP ranges allowed for SSH access"
|
|
|
|
|
type = list(string)
|
2026-03-01 04:04:56 +00:00
|
|
|
default = []
|
2026-02-28 20:24:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "allowed_api_ips" {
|
|
|
|
|
description = "IP ranges allowed for Kubernetes API access"
|
|
|
|
|
type = list(string)
|
2026-03-01 04:04:56 +00:00
|
|
|
default = []
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "restrict_api_ssh_to_tailnet" {
|
|
|
|
|
description = "Restrict SSH and Kubernetes API to tailnet CIDR"
|
|
|
|
|
type = bool
|
|
|
|
|
default = true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "tailnet_cidr" {
|
|
|
|
|
description = "Tailnet CIDR used for SSH/API access"
|
|
|
|
|
type = string
|
|
|
|
|
default = "100.64.0.0/10"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "tailscale_tailnet" {
|
|
|
|
|
description = "Tailnet domain suffix, e.g. mytailnet.ts.net"
|
|
|
|
|
type = string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "enable_nodeport_public" {
|
|
|
|
|
description = "Allow public NodePort traffic"
|
|
|
|
|
type = bool
|
|
|
|
|
default = false
|
2026-02-28 20:24:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "network_cidr" {
|
|
|
|
|
description = "CIDR for private network"
|
|
|
|
|
type = string
|
|
|
|
|
default = "10.0.0.0/16"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "subnet_cidr" {
|
|
|
|
|
description = "CIDR for server subnet"
|
|
|
|
|
type = string
|
|
|
|
|
default = "10.0.1.0/24"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "s3_access_key" {
|
|
|
|
|
description = "S3 access key for Terraform state"
|
|
|
|
|
type = string
|
|
|
|
|
sensitive = true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "s3_secret_key" {
|
|
|
|
|
description = "S3 secret key for Terraform state"
|
|
|
|
|
type = string
|
|
|
|
|
sensitive = true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "s3_endpoint" {
|
|
|
|
|
description = "S3 endpoint URL"
|
|
|
|
|
type = string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
variable "s3_bucket" {
|
|
|
|
|
description = "S3 bucket name for Terraform state"
|
|
|
|
|
type = string
|
|
|
|
|
default = "k8s-terraform-state"
|
|
|
|
|
}
|