packer { required_plugins { name = { version = "~> 1" source = "github.com/hashicorp/proxmox" } } } variable "bios_type" { type = string } variable "boot_command" { type = string } variable "boot_wait" { type = string } variable "bridge_firewall" { type = bool default = false } variable "bridge_name" { type = string } variable "cloud_init" { type = bool } variable "iso_file" { type = string } variable "iso_storage_pool" { type = string default = "local" } variable "machine_default_type" { type = string default = "pc" } variable "network_model" { type = string default = "virtio" } variable "os_type" { type = string default = "l26" } variable "proxmox_api_token_id" { type = string } variable "proxmox_api_token_secret" { type = string sensitive = true } variable "proxmox_api_url" { type = string } variable "proxmox_node" { type = string } variable "qemu_agent_activation" { type = bool default = true } variable "scsi_controller_type" { type = string } variable "ssh_timeout" { type = string } variable "tags" { type = string } variable "io_thread" { type = bool } variable "cpu_type" { type = string default = "x86-64-v3" } variable "vm_info" { type = string } variable "disk_discard" { type = bool default = true } variable "disk_format" { type = string default = "qcow2" } variable "disk_size" { type = string default = "16G" } variable "disk_type" { type = string default = "scsi" } variable "nb_core" { type = number default = 1 } variable "nb_cpu" { type = number default = 1 } variable "nb_ram" { type = number default = 1024 } variable "ssh_username" { type = string } variable "ssh_password" { type = string } variable "ssh_handshake_attempts" { type = number } variable "storage_pool" { type = string default = "local-zfs" } variable "vm_id" { type = number default = 99999 } variable "vm_name" { type = string } locals { packer_timestamp = formatdate("YYYYMMDD-hhmm", timestamp()) } source "proxmox-iso" "debian12" { bios = "${var.bios_type}" boot_command = ["${var.boot_command}"] boot_wait = "${var.boot_wait}" cloud_init = "${var.cloud_init}" cloud_init_storage_pool = "${var.storage_pool}" communicator = "ssh" cores = "${var.nb_core}" cpu_type = "${var.cpu_type}" http_directory = "autoinstall" insecure_skip_tls_verify = true iso_file = "${var.iso_file}" machine = "${var.machine_default_type}" memory = "${var.nb_ram}" node = "${var.proxmox_node}" os = "${var.os_type}" proxmox_url = "${var.proxmox_api_url}" qemu_agent = "${var.qemu_agent_activation}" scsi_controller = "${var.scsi_controller_type}" sockets = "${var.nb_cpu}" ssh_handshake_attempts = "${var.ssh_handshake_attempts}" ssh_pty = true ssh_timeout = "${var.ssh_timeout}" ssh_username = "${var.ssh_username}" ssh_password = "${var.ssh_password}" tags = "${var.tags}" template_description = "${var.vm_info} - ${local.packer_timestamp}" token = "${var.proxmox_api_token_secret}" unmount_iso = true username = "${var.proxmox_api_token_id}" vm_id = "${var.vm_id}" vm_name = "${var.vm_name}" efi_config { efi_storage_pool = "${var.storage_pool}" pre_enrolled_keys = false efi_type = "4m" } disks { discard = "${var.disk_discard}" disk_size = "${var.disk_size}" format = "${var.disk_format}" io_thread = "${var.io_thread}" storage_pool = "${var.storage_pool}" type = "${var.disk_type}" } network_adapters { bridge = "${var.bridge_name}" firewall = "${var.bridge_firewall}" model = "${var.network_model}" } } build { sources = ["source.proxmox-iso.debian12"] }