120 lines
3.7 KiB
HCL
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"
|
|
}
|
|
}
|