Initial commit
This commit is contained in:
86
skills/terraform/references/proxmox/vm-qemu.md
Normal file
86
skills/terraform/references/proxmox/vm-qemu.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# proxmox_vm_qemu Resource
|
||||
|
||||
## Basic VM from Template
|
||||
|
||||
```hcl
|
||||
resource "proxmox_vm_qemu" "vm" {
|
||||
name = "my-vm"
|
||||
target_node = "pve1"
|
||||
clone = "ubuntu-template"
|
||||
full_clone = true
|
||||
|
||||
cores = 4
|
||||
sockets = 1
|
||||
memory = 8192
|
||||
cpu = "host"
|
||||
|
||||
onboot = true
|
||||
agent = 1 # QEMU guest agent
|
||||
|
||||
scsihw = "virtio-scsi-single"
|
||||
disks {
|
||||
scsi {
|
||||
scsi0 {
|
||||
disk {
|
||||
storage = "local-lvm"
|
||||
size = "50G"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
network {
|
||||
bridge = "vmbr0"
|
||||
model = "virtio"
|
||||
}
|
||||
|
||||
# Cloud-init
|
||||
os_type = "cloud-init"
|
||||
ciuser = "ubuntu"
|
||||
sshkeys = var.ssh_public_key
|
||||
ipconfig0 = "ip=dhcp"
|
||||
# Static: ipconfig0 = "ip=192.168.1.10/24,gw=192.168.1.1"
|
||||
|
||||
# Custom cloud-init
|
||||
cicustom = "vendor=local:snippets/vendor-data.yml"
|
||||
}
|
||||
```
|
||||
|
||||
## Lifecycle Management
|
||||
|
||||
```hcl
|
||||
lifecycle {
|
||||
prevent_destroy = true # Block accidental deletion
|
||||
|
||||
ignore_changes = [
|
||||
network, # Ignore manual changes
|
||||
]
|
||||
|
||||
replace_triggered_by = [
|
||||
local_file.cloud_init.content_base64sha256
|
||||
]
|
||||
|
||||
create_before_destroy = true # Blue-green deployment
|
||||
}
|
||||
```
|
||||
|
||||
## Multiple VMs with for_each
|
||||
|
||||
```hcl
|
||||
variable "vms" {
|
||||
type = map(object({
|
||||
node = string
|
||||
cores = number
|
||||
memory = number
|
||||
}))
|
||||
}
|
||||
|
||||
resource "proxmox_vm_qemu" "vm" {
|
||||
for_each = var.vms
|
||||
name = each.key
|
||||
target_node = each.value.node
|
||||
cores = each.value.cores
|
||||
memory = each.value.memory
|
||||
# ...
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user