refactor: simplify homelab bootstrap around static IPs and fresh runs
Some checks failed
Terraform Plan / Terraform Plan (push) Failing after 10s
Some checks failed
Terraform Plan / Terraform Plan (push) Failing after 10s
Make Terraform the source of truth for node IPs, remove guest-agent/SSH discovery from the normal workflow path, simplify the bootstrap controller to a fresh-run flow, and swap the initial CNI to Flannel so cluster readiness is easier to prove before reintroducing more complex reconcile behavior.
This commit is contained in:
@@ -9,6 +9,15 @@ terraform {
|
||||
}
|
||||
}
|
||||
|
||||
locals {
|
||||
control_plane_ipconfig = [
|
||||
for ip in var.control_plane_ips : "ip=${ip}/${var.network_prefix_length},gw=${var.network_gateway}"
|
||||
]
|
||||
worker_ipconfig = [
|
||||
for ip in var.worker_ips : "ip=${ip}/${var.network_prefix_length},gw=${var.network_gateway}"
|
||||
]
|
||||
}
|
||||
|
||||
provider "proxmox" {
|
||||
pm_api_url = var.pm_api_url
|
||||
pm_api_token_id = var.pm_api_token_id
|
||||
@@ -35,7 +44,7 @@ resource "proxmox_vm_qemu" "control_planes" {
|
||||
scsihw = "virtio-scsi-pci"
|
||||
boot = "order=scsi0"
|
||||
bootdisk = "scsi0"
|
||||
ipconfig0 = "ip=dhcp"
|
||||
ipconfig0 = local.control_plane_ipconfig[count.index]
|
||||
ciuser = "micqdf"
|
||||
sshkeys = var.SSH_KEY_PUBLIC
|
||||
|
||||
@@ -90,7 +99,7 @@ resource "proxmox_vm_qemu" "workers" {
|
||||
scsihw = "virtio-scsi-pci"
|
||||
boot = "order=scsi0"
|
||||
bootdisk = "scsi0"
|
||||
ipconfig0 = "ip=dhcp"
|
||||
ipconfig0 = local.worker_ipconfig[count.index]
|
||||
ciuser = "micqdf"
|
||||
sshkeys = var.SSH_KEY_PUBLIC
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@ output "control_plane_vm_names" {
|
||||
|
||||
output "control_plane_vm_ipv4" {
|
||||
value = {
|
||||
for vm in proxmox_vm_qemu.control_planes :
|
||||
vm.name => vm.default_ipv4_address
|
||||
for i in range(var.control_plane_count) :
|
||||
proxmox_vm_qemu.control_planes[i].name => var.control_plane_ips[i]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ output "worker_vm_names" {
|
||||
|
||||
output "worker_vm_ipv4" {
|
||||
value = {
|
||||
for vm in proxmox_vm_qemu.workers :
|
||||
vm.name => vm.default_ipv4_address
|
||||
for i in range(var.worker_count) :
|
||||
proxmox_vm_qemu.workers[i].name => var.worker_ips[i]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,3 +17,9 @@ control_plane_disk_size = "80G"
|
||||
worker_cores = [4, 4, 4]
|
||||
worker_memory_mb = [12288, 12288, 12288]
|
||||
worker_disk_size = "120G"
|
||||
|
||||
network_prefix_length = 10
|
||||
network_gateway = "10.27.27.1"
|
||||
|
||||
control_plane_ips = ["10.27.27.50", "10.27.27.51", "10.27.27.49"]
|
||||
worker_ips = ["10.27.27.47", "10.27.27.46", "10.27.27.48"]
|
||||
|
||||
@@ -87,6 +87,40 @@ variable "worker_disk_size" {
|
||||
description = "Disk size for worker VMs"
|
||||
}
|
||||
|
||||
variable "network_prefix_length" {
|
||||
type = number
|
||||
default = 10
|
||||
description = "CIDR prefix length for static VM addresses"
|
||||
}
|
||||
|
||||
variable "network_gateway" {
|
||||
type = string
|
||||
default = "10.27.27.1"
|
||||
description = "Gateway for static VM addresses"
|
||||
}
|
||||
|
||||
variable "control_plane_ips" {
|
||||
type = list(string)
|
||||
default = ["10.27.27.50", "10.27.27.51", "10.27.27.49"]
|
||||
description = "Static IPv4 addresses for control plane VMs"
|
||||
|
||||
validation {
|
||||
condition = length(var.control_plane_ips) == var.control_plane_count
|
||||
error_message = "control_plane_ips length must match control_plane_count."
|
||||
}
|
||||
}
|
||||
|
||||
variable "worker_ips" {
|
||||
type = list(string)
|
||||
default = ["10.27.27.47", "10.27.27.46", "10.27.27.48"]
|
||||
description = "Static IPv4 addresses for worker VMs"
|
||||
|
||||
validation {
|
||||
condition = length(var.worker_ips) == var.worker_count
|
||||
error_message = "worker_ips length must match worker_count."
|
||||
}
|
||||
}
|
||||
|
||||
variable "bridge" {
|
||||
type = string
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user