PVE VM Forge est un petit projet Bash pour créer rapidement des VM Proxmox propres depuis des templates cloud-init.
Objectif : créer une VM en quelques minutes en renseignant uniquement :
- le profil de VM ;
- le nom ;
- l'utilisateur ;
- le mot de passe ;
- la RAM ;
- les sockets CPU ;
- les cores par socket ;
- la taille disque.
Le projet fonctionne en deux étapes :
- Télécharger les images cloud latest : Ubuntu, Debian, Kali.
- Créer des templates Proxmox depuis ces images.
- Cloner une VM depuis un template avec cloud-init.
Ce modèle est beaucoup plus rapide qu'une installation ISO complète à chaque VM.
| Profil | Base | GUI | Notes |
|---|---|---|---|
| Ubuntu Server latest | Ubuntu cloud image | Non | Profil serveur propre |
| Debian Server latest | Debian cloud image | Non | Profil serveur minimal |
| Docker Host latest | Ubuntu cloud image | Non | Installe Docker au premier boot |
| Ubuntu XFCE GUI latest | Ubuntu cloud image | Oui | Installe XFCE + XRDP au premier boot |
| Kali Cloud latest | Kali cloud image | Non | Kali cloud rapide avec cloud-init |
Pour une VM graphique réellement instantanée, crée ensuite une template GUI dédiée déjà préinstallée. Le profil
ubuntu-xfcefonctionne, mais l'installation de l'interface graphique se fait au premier boot et peut prendre plus longtemps qu'un simple clone serveur.
Sur le nœud Proxmox :
apt update
apt install -y curl wget openssl tar grep awkLe projet doit être exécuté en root sur le nœud Proxmox.
git clone https://github.com/TON-USER/pve-vm-forge.git
cd pve-vm-forge
./install.sh
nano config.envDans config.env, adapte au minimum :
PVE_STORAGE="local-lvm"
PVE_BRIDGE="vmbr0"
SNIPPET_STORAGE="local"
SNIPPET_DIR="/var/lib/vz/snippets"Vérifie aussi que le stockage SNIPPET_STORAGE accepte le contenu Snippets dans Proxmox :
Datacenter > Storage > local > Edit > Content > Snippets
scripts/refresh-images.shscripts/build-templates.shCela crée par défaut :
9000 - tmpl-ubuntu-resolute-latest
9001 - tmpl-debian-13-trixie-latest
9002 - tmpl-kali-cloud-latest
scripts/create-vm.shLe script demande :
Profil
Nom de la VM
Utilisateur
Mot de passe
RAM en Mo
Sockets CPU
Cores par socket
Taille disque
Clone lié ou clone complet
Démarrage automatique ou non
Exemple de valeurs :
Nom VM : lab-docker-01
Utilisateur : alex
RAM : 4096
Sockets : 1
Cores/socket : 2
Disque : 60G
Dans Proxmox :
vCPU = sockets × cores
Exemples :
1 socket × 2 cores = 2 vCPU
1 socket × 4 cores = 4 vCPU
2 sockets × 2 cores = 4 vCPU
Pour la plupart des VM, garde :
Sockets : 1
Cores : nombre de vCPU voulu
Valeurs RAM pratiques :
2048 = 2 Go
4096 = 4 Go
8192 = 8 Go
16384 = 16 Go
32768 = 32 Go
scripts/refresh-images.sh Télécharge Ubuntu/Debian/Kali latest
scripts/build-templates.sh Crée les templates Proxmox
scripts/create-vm.sh Crée une VM depuis un template
scripts/list-vms.sh Liste les VM
scripts/destroy-vm.sh Supprime une VM proprement
- Le mot de passe est saisi sans affichage.
- Le mot de passe est injecté dans cloud-init sous forme de hash SHA-512.
- Le fichier cloud-init snippet reste sur le nœud Proxmox dans
/var/lib/vz/snippets. - Le login SSH par mot de passe est activé pour respecter l'objectif du projet.
Si tu veux durcir ensuite :
- utiliser uniquement des clés SSH ;
- désactiver
ssh_pwauth; - ajouter un réseau isolé par VLAN ;
- ajouter des profils firewall ;
- supprimer automatiquement les snippets après le premier boot.
- Les images cloud sont beaucoup plus adaptées que les ISO pour créer des VM rapidement.
- Les ISO latest peuvent servir à reconstruire des templates manuellement, mais installer depuis ISO à chaque création de VM ne donnera pas un résultat en quelques minutes.
- Les profils Docker/XFCE installent des paquets au premier boot via cloud-init. Pour une création vraiment instantanée, transforme ensuite une VM configurée en template dédiée.
MIT