resource "proxmox_virtual_environment_vm" "this" { name = var.name vm_id = var.vm_id node_name = var.node_name pool_id = var.pool_id description = "Managed by Terraform (ceph course)" # Proxmox хранит теги отсортированными, иначе будет вечный diff tags = sort(distinct(var.tags)) clone { vm_id = var.template_vm_id datastore_id = var.datastore_id full = true } # Стенд включаем вручную, не при загрузке хоста on_boot = false stop_on_destroy = true agent { enabled = true trim = true wait_for_ip { ipv4 = true } } cpu { cores = var.cores type = "host" } # Без ballooning: Ceph плохо переносит, когда у него забирают память memory { dedicated = var.memory } operating_system { type = "l26" } scsi_hardware = "virtio-scsi-single" # Системный диск из шаблона, увеличиваем до нужного размера disk { interface = "scsi0" datastore_id = var.datastore_id size = var.os_disk_size discard = "on" iothread = true ssd = true } # Пустые диски под OSD. Serial osdN виден в ВМ в `lsblk -o NAME,SERIAL` dynamic "disk" { for_each = range(var.osd_disks) content { interface = "scsi${disk.value + 1}" datastore_id = var.datastore_id size = var.osd_disk_size discard = "on" iothread = true ssd = true serial = "osd${disk.value}" } } network_device { bridge = var.bridge } initialization { datastore_id = var.datastore_id dns { servers = var.dns_servers } ip_config { ipv4 { address = var.ipv4_address gateway = var.ipv4_gateway } } user_account { username = var.ssh_user keys = var.ssh_public_keys } } }