Files
packer/FreeBSD/freebsd-15.pkr.hcl
T
2026-07-27 13:50:18 -04:00

120 lines
3.7 KiB
HCL

variable "proxmox_apiuser" {
type = string
default = "packer"
}
variable "proxmox_apitoken" {
type = string
default = "changeme"
}
source "proxmox-iso" "freebsd-15" {
template_name = "freebsd-15"
template_description = "FreeBSD 15.1, generated on ${timestamp()}"
vm_id = "210"
boot_wait = "5s"
boot_key_interval = "200ms"
boot_command = ["<enter>",
"<wait10s>", # wait for boot to finish
"<enter><wait1s>", # begin installation
"<enter><wait1s>", # keymap
"freebsd<enter><wait1s>", # hostname
"<enter><wait1s>",
"<enter><wait1s>",
"<enter><wait1s>",
"<enter><wait15s>", # wait for network to come up
"<enter><wait3s>", # wait for disk detection
"<enter><wait1s>",
"<enter><wait1s>",
" <wait1s><enter><wait1s>", # select disk
"<left><enter><wait5s>", # confirm disk destroy
"<enter><wait120s>", # install base system
"packer<tab>packer<enter><wait3s>", # root password
"<down><down><enter><wait1s>", # timezone region
"95<up><enter><wait10s>", # timezone selection
"<enter><wait10s>",
"<enter><wait10s>",
"<enter><wait10s>",
"<enter><wait10s>",
"<down><down><down> <enter><wait1s>",
"<down><down><down><down><down><down><down><down> <enter><wait1s>",
"<enter><wait2s>",
"<enter><wait1s>",
"xadmin<enter>", # break-glass username
"Remote admin user<enter>", # break-glass name
"<enter>",
"<enter>",
"wheel<enter>", # break-glass group (wheel
"<enter>",
"<enter>",
"<enter>",
"<enter>",
"<enter>",
"<enter>",
"<enter>",
"<enter>",
"packer<enter>", # break-glass password
"packer<enter>", # break-glass password confirm
"<enter>",
"<enter>",
"<enter><wait1s>",
"<enter><wait1s>",
"<left><enter><wait1s>", # open post-install shell
"pkg install -y qemu-guest-agent sudo<enter><wait30s>", # install qemu-guest-agent package for Proxmox
"echo 'xadmin ALL=(ALL:ALL) NOPASSWD:ALL' > /usr/local/etc/sudoers.d/xadmin<enter><wait1s>", # allow xadmin to sudo
"sysrc qemu_guest_agent_enable=YES<enter><wait1s>", # enable QEMU guest agent
"exit<enter><wait1s>", # exit shell
"<enter>" # reboot
]
os = "other"
cores = "2"
sockets = "1"
cpu_type = "host"
memory = "2048"
scsi_controller = "virtio-scsi-single"
disks {
disk_size = "30G"
storage_pool = "templates"
type = "scsi"
format = "qcow2"
}
network_adapters {
bridge = "vmbr0"
model = "virtio"
}
proxmox_url = "https://kamino.int.metaunix.net:8006/api2/json/"
insecure_skip_tls_verify = true
username = "${var.proxmox_apiuser}"
password = "${var.proxmox_apitoken}"
node = "kamino"
pool = "Templates"
boot_iso {
type = "scsi"
iso_url = "https://download.freebsd.org/releases/amd64/amd64/ISO-IMAGES/15.1/FreeBSD-15.1-RELEASE-amd64-bootonly.iso"
iso_checksum = "sha256:3e74120a59512cefc35840443bdd05087c8a010a27cf8a6fbb4f7450824f092e"
iso_download_pve = true
iso_storage_pool = "iso"
unmount = true
}
ssh_username = "xadmin"
ssh_password = "packer"
ssh_timeout = "20m"
}
build {
sources = ["source.proxmox-iso.freebsd-15"]
provisioner "shell" {
script = "scripts/freebsd-install.sh"
}
provisioner "file" {
source = "scripts/initial-setup.sh"
destination = "/home/xadmin/initial-setup.sh"
}
}