Créer un template Cloudinit Debian 12 sur Proxmox
Télécharger l’image cloud debian 12
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2 |
Installer libguestfs-tools si nécessaire et ajouter qemu-guest-agent à l’image cloud précédemment téléchargée
apt install -y libguestfs-tools virt-customize -a debian-12-generic-amd64.qcow2 --install qemu-guest-agent --timezone Europe/France --update |
Création de la VM avec l’ID 777
qm create 777 --name debian12-cloudinit --net0 virtio,bridge=vmbr1,tag=3152 --scsihw virtio-scsi-single |
Attacher le disque et modifier sa taille à 20G
qm set 777 --scsi0 vmdata:0,iothread=1,backup=off,format=qcow2,import-from=/var/lib/vz/template/iso/debian-12-generic-amd64.qcow2 qm disk resize 777 scsi0 20G |
Définir l’ordre de boot
qm set 777 --boot order=scsi0 |
Définir le nombre de coeurs et la mémoire RAM
qm set 777 --cpu host --cores 4 --memory 4096 |
Attacher un disque Cloudinit
qm set 777 --ide2 vmdata:cloudinit qm set 777 --agent enabled=1 qm set 777 --tags "template,debian-cloud" qm set 777 --ipconfig0 ip=dhcp qm set 777 --keyboard fr qm set 777 --ciuser user --cipassword yourpassword qm set 777 --sshkeys ssh.pub |
Convertir en template
qm template 777 |
Faire la même chose avec un script Bash
#!/bin/bash
# Définir les variables par défaut
DEFAULT_VMID=8000
DEFAULT_NAME="debian-cloudinit-$DEFAULT_VMID"
DEFAULT_IMAGE="debian-12-generic-amd64.qcow2"
DEFAULT_NETWORK="virtio,bridge=vmbr1,tag=vlantag"
DEFAULT_SCSI_DISK="vmdata:0,iothread=1,backup=off,format=qcow2,import-from=$(pwd)/$DEFAULT_IMAGE"
DEFAULT_DISK_SIZE="15G"
DEFAULT_CPU_TYPE="host"
DEFAULT_CORES=4
DEFAULT_MEMORY=4096
DEFAULT_CIUSER="test"
#DEFAULT_CIPASSWORD="yourpassword"
DEFAULT_TAG="template,debian-cloud"
# Fonction pour gérer les erreurs
error_exit() {
echo -e "Erreur : $1"
exit 1
}
# Activer la gestion des erreurs
set -e
cat << "EOF"
██╗ ██╗███╗ ███╗ ███████╗███████╗████████╗██╗ ██╗██████╗
██║ ██║████╗ ████║ ██╔════╝██╔════╝╚══██╔══╝██║ ██║██╔══██╗
██║ ██║██╔████╔██║ ███████╗█████╗ ██║ ██║ ██║██████╔╝
╚██╗ ██╔╝██║╚██╔╝██║ ╚════██║██╔══╝ ██║ ██║ ██║██╔═══╝
╚████╔╝ ██║ ╚═╝ ██║ ███████║███████╗ ██║ ╚██████╔╝██║
╚═══╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝ ╚═╝ ╚═════╝ ╚═╝
EOF
echo -e
# Demander à l'utilisateur de saisir les variables
read -p "Enter VMID [${DEFAULT_VMID}]: " VMID
VMID=${VMID:-$DEFAULT_VMID}
read -p "Enter name [${DEFAULT_NAME}]: " NAME
NAME=${NAME:-$DEFAULT_NAME}
read -p "Enter image name [${DEFAULT_IMAGE}]: " IMAGE
IMAGE=${IMAGE:-$DEFAULT_IMAGE}
read -p "Enter network configuration [${DEFAULT_NETWORK}]: " NETWORK
NETWORK=${NETWORK:-$DEFAULT_NETWORK}
read -p "Enter SCSI disk configuration [${DEFAULT_SCSI_DISK}]: " SCSI_DISK
SCSI_DISK=${SCSI_DISK:-$DEFAULT_SCSI_DISK}
read -p "Enter disk size [${DEFAULT_DISK_SIZE}]: " DISK_SIZE
DISK_SIZE=${DISK_SIZE:-$DEFAULT_DISK_SIZE}
read -p "Enter CPU type [${DEFAULT_CPU_TYPE}]: " CPU_TYPE
CPU_TYPE=${CPU_TYPE:-$DEFAULT_CPU_TYPE}
read -p "Enter number of cores [${DEFAULT_CORES}]: " CORES
CORES=${CORES:-$DEFAULT_CORES}
read -p "Enter memory size in MB [${DEFAULT_MEMORY}]: " MEMORY
MEMORY=${MEMORY:-$DEFAULT_MEMORY}
read -p "Enter Cloud-Init username [${DEFAULT_CIUSER}]: " CIUSER
CIUSER=${CIUSER:-$DEFAULT_CIUSER}
read -p "Enter Cloud-Init password []: " CIPASSWORD # Ajouter -s pour cacher le password
CIPASSWORD=${CIPASSWORD:-$DEFAULT_CIPASSWORD}
read -p "Enter tags [${DEFAULT_TAG}]: " TAG
TAG=${TAG:-$DEFAULT_TAG}
# Étape 1 : Personnaliser l'image avec virt-customize
virt-customize -a "$IMAGE" --install qemu-guest-agent --timezone Europe/Berlin --update
# Étape 2 : Créer une VM avec l'ID spécifié
qm create "$VMID" --name "$NAME" --net0 "$NETWORK" --scsihw virtio-scsi-single
# Étape 3 : Ajouter un nouveau disque dur importé depuis l'image cloud
qm set "$VMID" --scsi0 "$SCSI_DISK"
# Étape 4 : Redimensionner le disque
qm disk resize "$VMID" scsi0 "$DISK_SIZE"
# Étape 5 : Définir le disque dur comme premier disque de démarrage
qm set "$VMID" --boot order=scsi0
# Étape 6 : Définir le nombre de cœurs et la mémoire RAM de la VM
qm set "$VMID" --cpu "$CPU_TYPE" --cores "$CORES" --memory "$MEMORY"
# Étape 7 : Attacher un disque Cloud-Init à la VM et faire la conf
qm set "$VMID" --ide2 vmdata:cloudinit
qm set "$VMID" --agent enabled=1
qm set "$VMID" --tags "$TAG"
qm set "$VMID" --ipconfig0 ip=dhcp
qm set "$VMID" --keyboard fr
qm set "$VMID" --ciuser "$CIUSER" --cipassword "$CIPASSWORD"
# Étape 8 : Convertir la VM en template
qm template "$VMID"
echo "Script exécuté avec succès. La VM $VMID a été créée et convertie en template."