diff --git a/build-proxmox-template b/build-proxmox-template index f20b39f..d5747fb 100755 --- a/build-proxmox-template +++ b/build-proxmox-template @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # # Build a disk image suitable for use as a Proxmox template in the CCCHH clusters. @@ -8,37 +8,58 @@ VMID=9023 STORAGE=local-zfs OS=debian-12 -NAME=chaos-${OS}-tmpl +NAME=chaos-${OS}-tmpl-$(date -u +%Y-%m-%d) BRIDGE=vmbr0,tag=208 -set -e +set -eE -virt-builder ${OS} -o ${NAME}.qcow2 --format qcow2 \ - --root-password disabled \ - --run-command 'echo grub-pc hold | dpkg --set-selections' \ +tempfolder=$(mktemp -d /tmp/cloudinit-XXXXX) +pushd $tempfolder + + +trap cleanup SIGHUP SIGINT SIGQUIT SIGABRT ERR EXIT + +cleanup() { + echo "Removing temporary files" + popd 2> /dev/null || true + rm -rf $tempfolder + exit +} + + +wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.tar.xz -O debian-12-generic-amd64.tar.xz +wget https://cloud.debian.org/images/cloud/bookworm/latest/SHA512SUMS -O SHA512SUMS +sha512sum --ignore-missing -c SHA512SUMS +rm SHA512SUMS +tar -xf debian-12-generic-amd64.tar.xz +rm debian-12-generic-amd64.tar.xz + +virt-customize -a disk.raw \ --update \ - --run-command 'apt dist-upgrade -y' \ - --install cloud-init,qemu-guest-agent \ + --install qemu-guest-agent \ --run-command 'systemctl enable qemu-guest-agent' \ --run-command 'systemctl enable fstrim.timer' \ - --edit '/etc/default/grub:s,GRUB_CMDLINE_LINUX="",GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0",' \ - --edit '/etc/default/grub:s,GRUB_TIMEOUT=.*,GRUB_TIMEOUT=1,' \ - --run-command 'update-grub' \ - --edit '/etc/ssh/sshd_config:s,#?Port.*,Port 42666,' \ + --edit '/etc/ssh/sshd_config:s,#?Port.*,Port 42666,' qm destroy ${VMID} || true -qm create ${VMID} --name ${NAME} --memory 1024 --net0 virtio,bridge=${BRIDGE} -qm importdisk ${VMID} ${NAME}.qcow2 ${STORAGE} +qm create ${VMID} --name "creating-vm" --memory 2048 --net0 virtio,bridge=${BRIDGE} +qm importdisk ${VMID} disk.raw ${STORAGE} +rm disk.raw +popd + qm set ${VMID} --scsihw virtio-scsi-pci --scsi0 ${STORAGE}:vm-${VMID}-disk-0,ssd=1,discard=on -qm resize ${VMID} scsi0 16G qm set ${VMID} --ide2 ${STORAGE}:cloudinit qm set ${VMID} --boot c --bootdisk scsi0 +qm resize ${VMID} scsi0 16G +qm set ${VMID} --machine q35 +qm set ${VMID} --ostype l26 +qm set ${VMID} --cpu cputype=host +qm set ${VMID} --cores 2 qm set ${VMID} --serial0 socket --vga serial0 qm set ${VMID} --agent 1,fstrim_cloned_disks=1 qm set ${VMID} --ciuser chaos qm set ${VMID} --sshkeys ./authorized_keys qm set ${VMID} --ipconfig0 ip=dhcp +qm set ${VMID} --name ${NAME} qm cloudinit update ${VMID} qm template ${VMID} - -rm -f ${NAME}.qcow2