#!/bin/bash # # Build a disk image suitable for use as a Proxmox template in the CCCHH clusters. # Needs apt install libguestfs-tools # VMID=9023 STORAGE=local-zfs OS=debian-12 NAME=chaos-${OS}-tmpl-$(date -u +%Y-%m-%d) BRIDGE=vmbr0,tag=208 set -eE 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 -4 https://git.hamburg.ccc.de/CCCHH/infrastructure-authorized-keys/raw/branch/trunk/authorized_keys -O authorized_keys 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 \ --install qemu-guest-agent \ --run-command 'systemctl enable qemu-guest-agent' \ --run-command 'systemctl enable fstrim.timer' \ --edit '/etc/ssh/sshd_config:s,#?Port.*,Port 42666,' qm destroy ${VMID} || true 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 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} --tags debian12 qm cloudinit update ${VMID} qm template ${VMID}