homelab/infrastructure/proxmox/modules/nixos-vm/main.tf
plasmagoat 0347f4d325
Some checks failed
Test / tests (push) Has been cancelled
/ OpenTofu (push) Successful in 9s
infra
2025-07-21 22:41:08 +02:00

66 lines
1.8 KiB
HCL

terraform {
required_providers {
proxmox = {
source = "Telmate/proxmox"
version = "3.0.2-rc01"
}
}
}
resource "proxmox_vm_qemu" "nixos-vm" {
vmid = var.vmid
name = var.name
target_node = var.target_node
agent = var.agent
cpu {
cores = var.cpu_cores
}
memory = var.memory
boot = var.boot # " " #"order=scsi0" # has to be the same as the OS disk of the template
clone_id = var.clone_id
full_clone = var.full_clone
scsihw = var.scsihw
vm_state = var.vm_state
automatic_reboot = var.automatic_reboot
# Cloud-Init configuration
# cicustom = "vendor=local:snippets/qemu-guest-agent.yml" # /var/lib/vz/snippets/qemu-guest-agent.yml
ciupgrade = var.ciupgrade
ipconfig0 = var.ipconfig0
skip_ipv6 = var.skip_ipv6
ciuser = var.ciuser
cipassword = var.cipassword # "Enter123!"
sshkeys = var.sshkeys # "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICUP7m8jZJiclZGfSje8CeBYFhX10SrdtjYziuChmj1X plasmagoat@macbook-air"
# Most cloud-init images require a serial device for their display
serial {
id = 0
}
disks {
virtio {
virtio0 {
# We have to specify the disk from our template, else Terraform will think it's not supposed to be there
disk {
storage = var.disk_storage
# The size of the disk should be at least as big as the disk in the template. If it's smaller, the disk will be recreated
size = var.disk_size
}
}
}
ide {
# Some images require a cloud-init disk on the IDE controller, others on the SCSI or SATA controller
ide1 {
cloudinit {
storage = var.cloudinit_storage
}
}
}
}
network {
id = 0
bridge = var.network_bridge
model = var.network_model
}
}