94 lines
2.7 KiB
HCL
94 lines
2.7 KiB
HCL
packer {
|
|
required_version = ">= 1.8.3"
|
|
required_plugins {
|
|
proxmox = {
|
|
version = "1.2.1"
|
|
source = "github.com/hashicorp/proxmox"
|
|
}
|
|
}
|
|
}
|
|
|
|
locals {
|
|
buildtime = formatdate("YYYY-MM-DD hh:mm ZZZ", timestamp())
|
|
data_source_content = {
|
|
"/ks.cfg" = templatefile("${abspath(path.root)}/data/init.ks.pkrtpl.hcl", {
|
|
build_password = var.build_password
|
|
vm_guest_os_language = var.vm_guest_os_language
|
|
vm_guest_os_keyboard = var.vm_guest_os_keyboard
|
|
vm_guest_os_timezone = var.vm_guest_os_timezone
|
|
files_proxmox_default_init = file("${abspath(path.root)}/data/files/90-proxmox.cfg")
|
|
files_proxmox_init = file("${abspath(path.root)}/data/files/93-proxmox.cfg")
|
|
})
|
|
}
|
|
data_source_command = "inst.ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks.cfg"
|
|
}
|
|
|
|
source "proxmox-iso" "rocky-linux-9" {
|
|
// Proxmox Settings
|
|
proxmox_url = "${var.proxmox_url}"
|
|
node = "${var.proxmox_node}"
|
|
username = "${var.proxmox_username}"
|
|
token = "${var.proxmox_token}"
|
|
|
|
// Virtual Machine Settings
|
|
vm_id = "${var.vm_id}"
|
|
cores = "${var.vm_cpu_cores}"
|
|
sockets = "${var.vm_cpu_sockets}"
|
|
cpu_type = "${var.vm_cpu_type}"
|
|
memory = "${var.vm_mem_size}"
|
|
os = "${var.vm_os_type}"
|
|
|
|
cloud_init = "${var.vm_cloud_init}"
|
|
cloud_init_storage_pool = "${var.vm_cloud_init_storage_pool}"
|
|
qemu_agent = "${var.vm_qemu_agent}"
|
|
|
|
network_adapters {
|
|
bridge = "${var.vm_network_adapter_bridge}"
|
|
model = "${var.vm_network_adapter_model}"
|
|
vlan_tag = "${var.vm_network_adapter_vlan_tag}"
|
|
}
|
|
|
|
disks {
|
|
disk_size = "${var.vm_disk_size}"
|
|
format = "${var.proxmox_storage_format}"
|
|
storage_pool = "${var.proxmox_storage_pool}"
|
|
type = "scsi"
|
|
io_thread = false
|
|
discard = true
|
|
}
|
|
|
|
scsi_controller = "virtio-scsi-pci"
|
|
|
|
// Removable Media Settings
|
|
iso_file = "${var.proxmox_iso_pool}/${var.proxmox_iso_file}"
|
|
http_content = "${local.data_source_content}"
|
|
http_interface = "${var.http_interface}"
|
|
|
|
// Boot and Provisioning Settings
|
|
boot_wait = "10s"
|
|
boot_command = [
|
|
"up",
|
|
"<tab><wait>",
|
|
" ${local.data_source_command}<wait><enter>"
|
|
]
|
|
|
|
// Communicator Settings and Credentials
|
|
communicator = "ssh"
|
|
ssh_username = "root"
|
|
ssh_password = "${var.build_password}"
|
|
ssh_timeout = "${var.communicator_timeout}"
|
|
|
|
template_description = "${var.proxmox_template_description} on ${local.buildtime}"
|
|
template_name = "${var.proxmox_template_name}"
|
|
unmount_iso = true
|
|
}
|
|
|
|
build {
|
|
sources = ["source.proxmox-iso.rocky-linux-9"]
|
|
|
|
provisioner "shell" {
|
|
scripts = formatlist("${path.cwd}/%s", var.build_scripts)
|
|
remote_folder = "/root"
|
|
}
|
|
}
|