provider "proxmox" { endpoint = var.proxmox_endpoint api_token = var.proxmox_api_token insecure = true } locals { cluster_name = "k8s-wheatley" kubernetes_version = "1.34.1" talos_version = "1.11.3" ipv4_gateway = "10.13.38.1" ipv4_cidr = "/24" cluster_endpoint_ip = "10.13.38.20" controlplanes = { cpu = 4 memory = 4 disk = 40 storagepool = "local-zfs" talos_version = local.talos_version cluster_name = local.cluster_name kubernetes_version = local.kubernetes_version ipv4_gateway = local.ipv4_gateway nodes = [ { name = "cp01" ip_address = "10.13.38.21" }, { name = "cp02" ip_address = "10.13.38.22" }, { name = "cp03" ip_address = "10.13.38.23" } ] } workers = { cpu = 4 memory = 4 disk = 40 storagepool = "local-zfs" talos_version = local.talos_version cluster_name = local.cluster_name kubernetes_version = local.kubernetes_version ipv4_gateway = local.ipv4_gateway nodes = [ { name = "worker01" ip_address = "10.13.38.20" }, { name = "worker02" ip_address = "10.13.38.21" }, { name = "worker03" ip_address = "10.13.38.22" } ] } } module "talos-image" { source = "./modules/talos-image" talos_version = local.talos_version } module "controlplanes" { depends_on = [module.talos-image] source = "./modules/controlplane" for_each = { for node in local.controlplanes.nodes : node.name => node } controlplane = { cpu = local.controlplanes.cpu memory = local.controlplanes.memory disk = local.controlplanes.disk storagepool = local.controlplanes.storagepool talos_version = local.talos_version cluster_name = local.cluster_name kubernetes_version = local.kubernetes_version node_name = format("k8s-wheatley-%s", each.value.name) cluster_endpoint = format("https://%s:6443", local.cluster_endpoint_ip) node_ipv4_address = format("%s%s", each.value.ip_address, local.ipv4_cidr) ipv4_gateway = local.ipv4_gateway } } module "workers" { depends_on = [module.controlplanes] source = "./modules/worker" for_each = { for node in local.workers.nodes : node.name => node } worker = { cpu = local.workers.cpu memory = local.workers.memory disk = local.workers.disk storagepool = local.workers.storagepool talos_version = local.talos_version cluster_name = local.cluster_name kubernetes_version = local.kubernetes_version node_name = format("k8s-wheatley-%s", each.value.name) cluster_endpoint = format("https://%s:6443", local.cluster_endpoint_ip) node_ipv4_address = format("%s%s", each.value.ip_address, local.ipv4_cidr) ipv4_gateway = local.ipv4_gateway } }