From c68529eb696c1af01661fb703b240159096215f2 Mon Sep 17 00:00:00 2001 From: pgijsbertsen <117165507+pgijsbertsen@users.noreply.github.com> Date: Sat, 15 Nov 2025 20:49:31 +0100 Subject: [PATCH] feat: Create nodes from templates --- pve01.wheatley.in/k8s-wheatley/main.tf | 81 +++++++--------- .../templates/machineconfig-cp.yaml.tmpl | 2 +- .../templates/machineconfig-worker.yaml.tmpl | 2 +- .../k8s-wheatley/modules/talos-image/main.tf | 45 --------- .../modules/talos-image/outputs.tf | 4 - .../modules/talos-image/variables.tf | 4 - .../k8s-wheatley/modules/talos-node/main.tf | 29 +----- .../modules/talos-node/variables.tf | 35 +++---- .../templates/talos/.terraform.lock.hcl | 59 ++++++++++++ pve01.wheatley.in/templates/talos/main.tf | 96 +++++++++++++++++++ .../templates/talos/providers.tf | 8 ++ .../talos}/schematic.yaml | 0 .../templates/talos/variables.tf | 8 ++ 13 files changed, 230 insertions(+), 143 deletions(-) delete mode 100644 pve01.wheatley.in/k8s-wheatley/modules/talos-image/main.tf delete mode 100644 pve01.wheatley.in/k8s-wheatley/modules/talos-image/outputs.tf delete mode 100644 pve01.wheatley.in/k8s-wheatley/modules/talos-image/variables.tf create mode 100644 pve01.wheatley.in/templates/talos/.terraform.lock.hcl create mode 100644 pve01.wheatley.in/templates/talos/main.tf create mode 100644 pve01.wheatley.in/templates/talos/providers.tf rename pve01.wheatley.in/{k8s-wheatley/modules/talos-image => templates/talos}/schematic.yaml (100%) create mode 100644 pve01.wheatley.in/templates/talos/variables.tf diff --git a/pve01.wheatley.in/k8s-wheatley/main.tf b/pve01.wheatley.in/k8s-wheatley/main.tf index aa392ad..e0e41b0 100644 --- a/pve01.wheatley.in/k8s-wheatley/main.tf +++ b/pve01.wheatley.in/k8s-wheatley/main.tf @@ -8,9 +8,9 @@ locals { cluster_name = "k8s-wheatley" vm-id_prefix = 200 kubernetes_version = "1.34.1" - talos_version = "1.11.3" - gateway_api_version = "1.4.0" - cilium_version = "1.14.1" + talos_version = "1.11.5" + gateway_api_version = "1.3.0" + cilium_version = "1.18.4" ipv4_gateway = "10.13.38.1" cluster_endpoint_ip = "10.13.38.10" proxmox_node = "pve01" @@ -18,7 +18,7 @@ locals { controlplanes = { cpu = 4 - memory = 4 + memory = 8 disk = 40 storagepool = "nvme-fastpool" talos_version = local.talos_version @@ -46,14 +46,16 @@ locals { ] workers = { - cpu = 4 - memory = 4 + cpu = 8 + memory = 8 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 + pvc_disks = [100] + nodes = [ { name = "worker01" @@ -83,60 +85,47 @@ locals { ] } -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 = { - id = local.vm-id_prefix + 10 + tonumber(replace(each.key, "cp", "")) - 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 + id = local.vm-id_prefix + 10 + tonumber(replace(each.key, "cp", "")) + 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 } } module "workers" { - depends_on = [module.talos-image] - source = "./modules/talos-node" for_each = { for node in local.workers.nodes : node.name => node } node = { - id = local.vm-id_prefix + 20 + tonumber(replace(each.key, "worker", "")) - 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 + id = local.vm-id_prefix + 20 + tonumber(replace(each.key, "worker", "")) + 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 } + pvc_disks = local.workers.pvc_disks } module "talos-bootstrap" { diff --git a/pve01.wheatley.in/k8s-wheatley/modules/talos-bootstrap/templates/machineconfig-cp.yaml.tmpl b/pve01.wheatley.in/k8s-wheatley/modules/talos-bootstrap/templates/machineconfig-cp.yaml.tmpl index 052c621..54a4d15 100644 --- a/pve01.wheatley.in/k8s-wheatley/modules/talos-bootstrap/templates/machineconfig-cp.yaml.tmpl +++ b/pve01.wheatley.in/k8s-wheatley/modules/talos-bootstrap/templates/machineconfig-cp.yaml.tmpl @@ -7,7 +7,7 @@ machine: network: hostname: ${hostname} nameservers: - - 10.13.37.2 + - 192.168.1.2 interfaces: - interface: eth0 dhcp: false diff --git a/pve01.wheatley.in/k8s-wheatley/modules/talos-bootstrap/templates/machineconfig-worker.yaml.tmpl b/pve01.wheatley.in/k8s-wheatley/modules/talos-bootstrap/templates/machineconfig-worker.yaml.tmpl index 423f1f5..66e8e8a 100644 --- a/pve01.wheatley.in/k8s-wheatley/modules/talos-bootstrap/templates/machineconfig-worker.yaml.tmpl +++ b/pve01.wheatley.in/k8s-wheatley/modules/talos-bootstrap/templates/machineconfig-worker.yaml.tmpl @@ -7,7 +7,7 @@ machine: network: hostname: ${hostname} nameservers: - - 10.13.37.2 + - 192.168.1.2 kubelet: extraArgs: pod-max-pids: 1000 diff --git a/pve01.wheatley.in/k8s-wheatley/modules/talos-image/main.tf b/pve01.wheatley.in/k8s-wheatley/modules/talos-image/main.tf deleted file mode 100644 index 7675878..0000000 --- a/pve01.wheatley.in/k8s-wheatley/modules/talos-image/main.tf +++ /dev/null @@ -1,45 +0,0 @@ -terraform { - required_providers { - proxmox = { - source = "bpg/proxmox" - version = "0.86.0" - } - } -} - -data "http" "schematic" { - url = "https://factory.talos.dev/schematics" - method = "POST" - request_body = file("${path.module}/schematic.yaml") - request_headers = { - "Content-Type" = "application/x-yaml" - } -} - -locals { - schematic_id = jsondecode(data.http.schematic.response_body)["id"] - iso_url = "${"https://factory.talos.dev/image"}/${local.schematic_id}/v${var.talos_version}/nocloud-amd64-secureboot.raw.xz" - iso_file = "talos-${var.talos_version}-nocloud-amd64-secureboot.raw" -} - -resource "null_resource" "local_download_talos_image" { - provisioner "local-exec" { - command = <