create-pve-template.sh
· 1.3 KiB · Bash
Bruto
#!/bin/bash
set -e
TEMPLATE_URL="https://cloud-images.ubuntu.com/plucky/current/plucky-server-cloudimg-amd64.img"
VMID=9000
TEMPLATE_NAME="ubuntu-25.04-cloudimg-temp"
STORAGE="local-lvm"
SSH_KEY=$(curl https://gist.vorpax.dev/vorpax/ssh) # One key per line
# Arguments positionnels d'abord (optional)
[ -n "$1" ] && VMID="$1"
[ -n "$2" ] && TEMPLATE_NAME="$2"
[ -n "$3" ] && STORAGE="$3"
# Puis arguments nommés override (optional)
while [[ $# -gt 4 ]]; do
shift
case "$1" in
--vmid=*) VMID="${1#*=}" ;;
--template=*) TEMPLATE_NAME="${1#*=}" ;;
--storage=*) STORAGE="${1#*=}" ;;
esac
done
cd /tmp
wget -O "${TEMPLATE_NAME}_disk" \
"$TEMPLATE_URL"
qm create "$VMID" \
--name "$TEMPLATE_NAME" \
--memory 3072 \
--cores 3 \
--net0 virtio,bridge=vmbr0 \
--serial0 socket \
--vga serial0
qm importdisk "$VMID" "${TEMPLATE_NAME}_disk" "$STORAGE"
mkdir ssh_keys_tmp
SSH_KEY_PATH="ssh_keys_tmp/$($(date +%s)).pub"
echo SSH_KEY > "${SSH_KEY_PATH}"
qm set "$VMID" \
--scsihw virtio-scsi-pci \
--scsi0 "${STORAGE}:vm-${VMID}-disk-0" \
--ide2 "${STORAGE}:cloudinit" \
--boot c --bootdisk scsi0 \
--serial0 socket --vga serial0 \
--net0 virtio,bridge=vmbr0 \
--ciuser packer \
--sshkeys
--searchdomain
qm template "$VMID"
echo "Template $VMID ready for Packer"
| 1 | #!/bin/bash |
| 2 | |
| 3 | set -e |
| 4 | |
| 5 | TEMPLATE_URL="https://cloud-images.ubuntu.com/plucky/current/plucky-server-cloudimg-amd64.img" |
| 6 | VMID=9000 |
| 7 | TEMPLATE_NAME="ubuntu-25.04-cloudimg-temp" |
| 8 | STORAGE="local-lvm" |
| 9 | |
| 10 | SSH_KEY=$(curl https://gist.vorpax.dev/vorpax/ssh) # One key per line |
| 11 | |
| 12 | # Arguments positionnels d'abord (optional) |
| 13 | [ -n "$1" ] && VMID="$1" |
| 14 | [ -n "$2" ] && TEMPLATE_NAME="$2" |
| 15 | [ -n "$3" ] && STORAGE="$3" |
| 16 | |
| 17 | # Puis arguments nommés override (optional) |
| 18 | while [[ $# -gt 4 ]]; do |
| 19 | shift |
| 20 | case "$1" in |
| 21 | --vmid=*) VMID="${1#*=}" ;; |
| 22 | --template=*) TEMPLATE_NAME="${1#*=}" ;; |
| 23 | --storage=*) STORAGE="${1#*=}" ;; |
| 24 | esac |
| 25 | done |
| 26 | |
| 27 | cd /tmp |
| 28 | wget -O "${TEMPLATE_NAME}_disk" \ |
| 29 | "$TEMPLATE_URL" |
| 30 | |
| 31 | qm create "$VMID" \ |
| 32 | --name "$TEMPLATE_NAME" \ |
| 33 | --memory 3072 \ |
| 34 | --cores 3 \ |
| 35 | --net0 virtio,bridge=vmbr0 \ |
| 36 | --serial0 socket \ |
| 37 | --vga serial0 |
| 38 | |
| 39 | qm importdisk "$VMID" "${TEMPLATE_NAME}_disk" "$STORAGE" |
| 40 | |
| 41 | |
| 42 | mkdir ssh_keys_tmp |
| 43 | SSH_KEY_PATH="ssh_keys_tmp/$($(date +%s)).pub" |
| 44 | echo SSH_KEY > "${SSH_KEY_PATH}" |
| 45 | |
| 46 | |
| 47 | qm set "$VMID" \ |
| 48 | --scsihw virtio-scsi-pci \ |
| 49 | --scsi0 "${STORAGE}:vm-${VMID}-disk-0" \ |
| 50 | --ide2 "${STORAGE}:cloudinit" \ |
| 51 | --boot c --bootdisk scsi0 \ |
| 52 | --serial0 socket --vga serial0 \ |
| 53 | --net0 virtio,bridge=vmbr0 \ |
| 54 | --ciuser packer \ |
| 55 | --sshkeys |
| 56 | --searchdomain |
| 57 | |
| 58 | qm template "$VMID" |
| 59 | |
| 60 | echo "Template $VMID ready for Packer" |