Utoljára aktív 3 weeks ago

Working version of my proxmox template creation script. It'll be used to provision Packer with necessary templates in order to build it's image.

Revízió c1d535a071d33f31986aa883cefe1101f0b54e3e

create-pve-template.sh Eredeti
1#!/bin/bash
2set -e
3
4TEMPLATE_URL="https://cloud-images.ubuntu.com/plucky/current/plucky-server-cloudimg-amd64.img"
5VMID=9000
6TEMPLATE_NAME="ubuntu-25.04-cloudimg-temp"
7STORAGE="local-lvm"
8SKIP_DISK_SETUP=false
9
10# Parser avec getopt
11OPTS=$(getopt -o "" --long vmid:,template:,storage:,skip-disk -n 'script' -- "$@")
12eval set -- "$OPTS"
13
14while true; do
15 case "$1" in
16 --vmid) VMID="$2"; shift 2 ;;
17 --template) TEMPLATE_NAME="$2"; shift 2 ;;
18 --storage) STORAGE="$2"; shift 2 ;;
19 --skip-disk) SKIP_DISK_SETUP=true; shift ;;
20 --) shift; break ;;
21 *) break ;;
22 esac
23done
24
25# Récupérer les clés SSH avec décodage propre
26SSH_KEYS=$(curl -s https://gist.vorpax.dev/vorpax/ssh/raw/HEAD/ssh-keys.pub | sed 's/%20/ /g; s/%0A/\n/g; s/%3D/=/g; s/%2F/\//g; s/%40/@/g; s/%3A/:/g')
27
28cd /tmp
29
30if [ "$SKIP_DISK_SETUP" = false ]; then
31 echo "Downloading and importing disk..."
32 wget -O "${TEMPLATE_NAME}_disk" "$TEMPLATE_URL"
33
34 qm create "$VMID" \
35 --name "$TEMPLATE_NAME" \
36 --memory 3072 \
37 --cores 3 \
38 --net0 virtio,bridge=vmbr0 \
39 --serial0 socket \
40 --vga serial0
41
42 qm importdisk "$VMID" "${TEMPLATE_NAME}_disk" "$STORAGE"
43else
44 echo "Skipping disk setup (--skip-disk flag)"
45fi
46
47# Créer le dossier des clés SSH
48SSH_KEYS_DIR="ssh_keys_${VMID}"
49mkdir -p "$SSH_KEYS_DIR"
50
51# Écrire chaque clé dans un fichier unique
52KEY_INDEX=0
53while IFS= read -r key; do
54 [ -z "$key" ] && continue
55 SSH_KEY_FILE="${SSH_KEYS_DIR}/key_$(date +%s)_${KEY_INDEX}.pub"
56 echo "$key" > "$SSH_KEY_FILE"
57 echo "${key} in ${SSH_KEY_FILE}"
58 qm set "$VMID" --sshkey "$SSH_KEY_FILE"
59 ((KEY_INDEX++))
60done <<< "$SSH_KEYS"
61
62qm set "$VMID" \
63 --scsihw virtio-scsi-pci \
64 --scsi0 "${STORAGE}:vm-${VMID}-disk-0" \
65 --ide2 "${STORAGE}:cloudinit" \
66 --boot c --bootdisk scsi0 \
67 --serial0 socket \
68 --vga serial0 \
69 --net0 virtio,bridge=vmbr0 \
70 --ciuser packer \
71 --searchdomain .lab.internal
72
73qm template "$VMID"
74
75echo "Template $VMID ready for Packer"