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" cilium_version = "1.14.1" ipv4_gateway = "10.13.38.1" cluster_endpoint_ip = "10.13.38.10" proxmox_node = "pve01" controlplanes = { cpu = 4 memory = 4 disk = 40 storagepool = "nvme-fastpool" 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.11" }, { name = "cp02" ip_address = "10.13.38.12" }, { name = "cp03" ip_address = "10.13.38.13" }, ] } controlplane_addresses = [ for node in local.controlplanes.nodes : node.ip_address ] workers = { cpu = 4 memory = 4 disk = 40 storagepool = "nvme-fastpool" 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.21" }, { name = "worker02" ip_address = "10.13.38.22" }, { name = "worker03" ip_address = "10.13.38.23" }, { name = "worker04" ip_address = "10.13.38.24" }, { name = "worker05" ip_address = "10.13.38.25" }, ] } worker_addresses = [ for node in local.workers.nodes : node.ip_address ] } module "talos-image" { source = "./modules/talos-image" talos_version = local.talos_version } module "controlplanes" { depends_on = [module.talos-image] source = "./modules/talos-node" for_each = { for node in local.controlplanes.nodes : node.name => node } node = { name = format("k8s-wheatley-%s", each.value.name) ipv4_address = each.value.ip_address 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 cluster_endpoint = local.cluster_endpoint_ip ipv4_gateway = local.ipv4_gateway proxmox_node = local.proxmox_node controlplane_addresses = local.controlplane_addresses worker_addresses = local.worker_addresses } } resource "time_sleep" "delay_before_workers" { depends_on = [module.talos-image] create_duration = "1s" } module "workers" { depends_on = [time_sleep.delay_before_workers] source = "./modules/talos-node" for_each = { for node in local.workers.nodes : node.name => node } node = { name = format("k8s-wheatley-%s", each.value.name) ipv4_address = each.value.ip_address 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 cluster_endpoint = local.cluster_endpoint_ip ipv4_gateway = local.ipv4_gateway proxmox_node = local.proxmox_node controlplane_addresses = local.controlplane_addresses worker_addresses = local.worker_addresses } }