terraform { required_providers { proxmox = { source = "bpg/proxmox" version = "0.42.0" } } } resource "proxmox_virtual_environment_file" "cloud_user_config" { content_type = "snippets" datastore_id = "local" node_name = var.node_name source_raw { data = var.cloudinit_config file_name = "${var.hostname}.${var.domain}-user.yaml" } } resource "proxmox_virtual_environment_file" "cloud_meta_config" { content_type = "snippets" datastore_id = "local" node_name = var.node_name source_raw { data = templatefile("${path.module}/cloud-init/meta_data", { instance_id = sha1(var.hostname) local_hostname = var.hostname } ) file_name = "${var.hostname}.${var.domain}-meta_data.yaml" } } resource "proxmox_virtual_environment_vm" "vm" { name = var.name vm_id = var.vm_id node_name = var.node_name clone { vm_id = var.template_id } cpu { cores = var.cores } memory { dedicated = var.memory } disk { interface = "scsi0" iothread = true datastore_id = "local-lvm" size = var.disk_size discard = "ignore" } agent { enabled = true } network_device { bridge = "vmbr0" } initialization { ip_config { ipv4 { address = "${var.vm_ip_address}/24" gateway = "192.168.1.1" } } datastore_id = "local-lvm" interface = "ide2" user_data_file_id = proxmox_virtual_environment_file.cloud_user_config.id meta_data_file_id = proxmox_virtual_environment_file.cloud_meta_config.id } }