Files
Software/terraform-pve-vm/terraform/main.tf
2026-06-14 19:53:10 -04:00

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
}
}
}