#!/bin/bash # Run this in the Proxmox web shell (node: proxmox → Shell) # Creates a Debian 12 cloud-init template (VM ID 9000) set -euo pipefail TEMPLATE_ID=9000 TEMPLATE_NAME="debian-12-cloud" STORAGE="local-lvm" IMAGE_URL="https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2" IMAGE_FILE="/tmp/debian-12-genericcloud-amd64.qcow2" echo "==> Downloading Debian 12 cloud image..." wget -q --show-progress -O "$IMAGE_FILE" "$IMAGE_URL" echo "==> Installing qemu-guest-agent into image..." apt-get install -y libguestfs-tools virt-customize -a "$IMAGE_FILE" \ --install qemu-guest-agent \ --truncate /etc/machine-id echo "==> Removing old template if it exists..." if qm status $TEMPLATE_ID &>/dev/null; then qm destroy $TEMPLATE_ID --purge fi echo "==> Creating VM $TEMPLATE_ID..." qm create $TEMPLATE_ID \ --name "$TEMPLATE_NAME" \ --memory 2048 \ --cores 2 \ --net0 virtio,bridge=vmbr0 \ --ostype l26 \ --agent enabled=1 \ --serial0 socket \ --vga serial0 echo "==> Importing disk to $STORAGE..." qm importdisk $TEMPLATE_ID "$IMAGE_FILE" $STORAGE echo "==> Configuring disk and cloud-init..." qm set $TEMPLATE_ID \ --scsihw virtio-scsi-pci \ --scsi0 "$STORAGE:vm-${TEMPLATE_ID}-disk-0,discard=on" \ --ide2 "$STORAGE:cloudinit" \ --boot c \ --bootdisk scsi0 \ --ipconfig0 ip=dhcp \ --ciupgrade 1 echo "==> Converting to template..." qm template $TEMPLATE_ID echo "==> Cleaning up..." rm -f "$IMAGE_FILE" echo "" echo "Done! Template ID $TEMPLATE_ID ($TEMPLATE_NAME) is ready."