91 lines
2.2 KiB
HCL
91 lines
2.2 KiB
HCL
locals {
|
|
# VM definitions: name, node, vmid, static IP
|
|
vms = {
|
|
for idx, suffix in var.name_suffixes : "vm-${suffix}" => {
|
|
name = "${var.name_prefix}-${suffix}"
|
|
node = element(["mk33", "mk34", "mk39"], idx)
|
|
vmid = var.vmid_base + idx
|
|
ipv4 = "${var.subnet_prefix}.30.${var.vmid_base + idx}/18"
|
|
}
|
|
}
|
|
}
|
|
|
|
resource "proxmox_virtual_environment_vm" "ubuntu_vm" {
|
|
for_each = local.vms
|
|
|
|
name = each.value.name
|
|
node_name = each.value.node
|
|
vm_id = each.value.vmid
|
|
|
|
tags = concat(var.tags, [each.key])
|
|
|
|
# ── CPU / Memory ──────────────────────────
|
|
cpu {
|
|
cores = var.cores
|
|
}
|
|
|
|
memory {
|
|
dedicated = var.memory
|
|
}
|
|
|
|
# ── QEMU Guest Agent ──────────────────────
|
|
agent {
|
|
enabled = true
|
|
}
|
|
|
|
# ── Boot / EFI ────────────────────────────
|
|
bios = "ovmf"
|
|
|
|
efi_disk {
|
|
datastore_id = var.storage
|
|
type = "4m"
|
|
}
|
|
|
|
machine = "q35"
|
|
|
|
# ── SCSI Controller ───────────────────────
|
|
scsi_hardware = "virtio-scsi-single"
|
|
|
|
# ── Disk (Cloud-init image) ───────────────
|
|
disk {
|
|
datastore_id = var.storage
|
|
file_id = var.cloud_image_id
|
|
interface = "scsi0"
|
|
iothread = true
|
|
discard = "on"
|
|
size = var.disk_size
|
|
}
|
|
|
|
# ── Network ─────────────────────────────────
|
|
network_device {
|
|
bridge = var.bridge
|
|
}
|
|
|
|
# ── VGA / Console ─────────────────────────
|
|
vga {
|
|
type = "std"
|
|
}
|
|
|
|
# ── Cloud-Init ─────────────────────────────
|
|
initialization {
|
|
datastore_id = var.cloudinit_storage
|
|
|
|
user_account {
|
|
username = "jarvis"
|
|
password = "ubuntu"
|
|
keys = [file(var.ssh_key_path)]
|
|
}
|
|
|
|
ip_config {
|
|
ipv4 {
|
|
address = each.value.ipv4
|
|
gateway = var.gateway
|
|
}
|
|
}
|
|
|
|
dns {
|
|
servers = var.dns_servers
|
|
}
|
|
}
|
|
}
|