92 lines
2.0 KiB
Terraform
92 lines
2.0 KiB
Terraform
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
|
|
}
|
|
}
|
|
}
|