fix(terraform): Configure storage for LINSTOR cluster topology
Some checks failed
CD - Deploy Infrastructure / Terraform Validation (push) Failing after 5s
CD - Deploy Infrastructure / Deploy on pve1 (push) Has been skipped
CD - Deploy Infrastructure / Deploy on pve2 (push) Has been skipped
CD - Deploy Infrastructure / Deploy on pve3 (push) Has been skipped
CD - Deploy Infrastructure / Validate K3s Cluster (push) Has been skipped
CD - Deploy Infrastructure / Deployment Notification (push) Failing after 1s

Storage configuration changes:
- Add full_clone=true for better LINSTOR compatibility
- Add replicate=1 to disk config for k3s servers on LINSTOR
- Configure etcd-witness to use local-lvm storage on thinkpad
- Add etcd_witness_storage_pool variable with local-lvm default

Fixes:
- etcd-witness now uses local storage since thinkpad is LINSTOR controller only
- k3s-server-1 and k3s-server-2 use LINSTOR replicated storage on acemagician/elitedesk
- Explicit replication flag helps LINSTOR create resources correctly
This commit is contained in:
Tellsanguis 2025-11-26 17:51:03 +01:00
parent 80d434069b
commit 2ccccc5ce1
5 changed files with 26 additions and 14 deletions

View file

@ -153,19 +153,20 @@ jobs:
run: |
cd terraform/pve3
cat > terraform.tfvars <<EOF
proxmox_token_id = "${{ secrets.PROXMOX_TOKEN_ID }}"
proxmox_token_secret = "${{ secrets.PROXMOX_TOKEN_SECRET }}"
ssh_public_key = "${{ secrets.SSH_PUBLIC_KEY }}"
forgejo_token = "${{ secrets.GIT_TOKEN }}"
forgejo_repo_url = "${{ secrets.GIT_REPO_URL }}"
k3s_version = "v1.28.5+k3s1"
ubuntu_template = "ubuntu-2404-cloudinit"
storage_pool = "linstor_storage"
snippets_storage = "local"
k3s_network_bridge = "k3s"
k3s_gateway = "10.100.20.1"
k3s_dns = ["10.100.20.1", "1.1.1.1"]
etcd_witness_config = { ip = "10.100.20.30/24", cores = 2, memory = 2048, disk_size = "20G" }
proxmox_token_id = "${{ secrets.PROXMOX_TOKEN_ID }}"
proxmox_token_secret = "${{ secrets.PROXMOX_TOKEN_SECRET }}"
ssh_public_key = "${{ secrets.SSH_PUBLIC_KEY }}"
forgejo_token = "${{ secrets.GIT_TOKEN }}"
forgejo_repo_url = "${{ secrets.GIT_REPO_URL }}"
k3s_version = "v1.28.5+k3s1"
ubuntu_template = "ubuntu-2404-cloudinit"
storage_pool = "linstor_storage"
etcd_witness_storage_pool = "local-lvm"
snippets_storage = "local"
k3s_network_bridge = "k3s"
k3s_gateway = "10.100.20.1"
k3s_dns = ["10.100.20.1", "1.1.1.1"]
etcd_witness_config = { ip = "10.100.20.30/24", cores = 2, memory = 2048, disk_size = "20G" }
EOF
tofu init
tofu apply -auto-approve

View file

@ -25,6 +25,7 @@ resource "proxmox_vm_qemu" "k3s_server_1" {
name = "k3s-server-1"
target_node = "acemagician"
clone = var.ubuntu_template
full_clone = true
cpu {
cores = var.k3s_server_1_config.cores
@ -50,6 +51,7 @@ resource "proxmox_vm_qemu" "k3s_server_1" {
type = "disk"
storage = var.storage_pool
iothread = true
replicate = 1
}
ipconfig0 = "ip=${var.k3s_server_1_config.ip},gw=${var.k3s_gateway}"

View file

@ -25,6 +25,7 @@ resource "proxmox_vm_qemu" "k3s_server_2" {
name = "k3s-server-2"
target_node = "elitedesk"
clone = var.ubuntu_template
full_clone = true
cpu {
cores = var.k3s_server_2_config.cores
@ -50,6 +51,7 @@ resource "proxmox_vm_qemu" "k3s_server_2" {
type = "disk"
storage = var.storage_pool
iothread = true
replicate = 1
}
ipconfig0 = "ip=${var.k3s_server_2_config.ip},gw=${var.k3s_gateway}"

View file

@ -25,6 +25,7 @@ resource "proxmox_vm_qemu" "etcd_witness" {
name = "etcd-witness"
target_node = "thinkpad"
clone = var.ubuntu_template
full_clone = true
cpu {
cores = var.etcd_witness_config.cores
@ -48,7 +49,7 @@ resource "proxmox_vm_qemu" "etcd_witness" {
slot = "scsi0"
size = var.etcd_witness_config.disk_size
type = "disk"
storage = var.storage_pool
storage = var.etcd_witness_storage_pool
iothread = true
}

View file

@ -53,6 +53,12 @@ variable "storage_pool" {
type = string
}
variable "etcd_witness_storage_pool" {
description = "Proxmox storage pool for etcd witness VM disk (thinkpad uses local storage)"
type = string
default = "local-lvm"
}
variable "snippets_storage" {
description = "Proxmox storage for cloud-init snippets"
type = string