Le but est de rendre interactif la création d’une machine virtuelle via un Template Proxmox et un menu BASH.
Il est évident qu’il vous faudra un Template déjà présent sur votre infrastructure PROXMOX.
Le menu permet de préciser les différents items que l’on désirs pour déployer la nouvelle machine virtuelle. (Script en fin de MODOP)
Le menu BASH vous demandera de préciser
- Le numéro (VMID) de la machine Template
- Le nom de la machine sur l’infrastructure
- Le réseau (vSwitch) pour la machine virtuelle
- La taille de mémoire à allouer
- La taille du disque à allouer
- Le nombre de Processeur (Socket)
- Le nombre de vCPU (Core)
- Le mot de passe pour le root
Le script va permettre
- Récupérer une VMID+1 pour la nouvelle machine virtuelle
- Récupérer les IP/Gateway/DNS/Domaine via le vSwitch
- Récupérer une IP disponible sur le réseau vSwitch
Le Template Centos7
Ici le VMID du Template est : 5000
Lancement du script
root@floki03:~# ./Proxmox_Create_VM_via_Template.sh
Saisir le VMID du Template et « ENTER »
Saisir votre nom machine et « ENTER »
Préciser le vSwitch et « ENTER »
Préciser la taille de la mémoire et « ENTER »
Préciser la taille du disque et « ENTER »
Préciser le nombre de CPU (Socket) et « ENTER »
Préciser le nombre de vCPU (Core) et « ENTER »
Préciser votre mot de passe et « ENTER »
La machine va se déployer automatiquement sur l’infrastructure et démarrer et se mettre à jour automatiquement via Cloud-Init.
Machine haproxy déployée.
Spécification de la machine
Spécification Cloud-Init de la machine
Script BASH
root@floki03:~# vi Proxmox_Create_VM_via_Template.sh
#!/bin/bash clear echo "############################################################################################" echo "" echo " Spécifier les paramètres souhaités pour la machine Virtuelle" echo "" echo "############################################################################################" echo "" echo -n " Préciser le VMID du Template Proxmox (ex: 5000): " read NUMBER_TEMPLATE echo "" echo -n " Préciser le nom pour votre machine (ex: web.house.cpb): " read NOM_MACHINE echo "" echo -n " Préciser le Réseau pour votre machine (ex: vmbr0,vmbr1) :" read VMBR_VM echo "" echo -n " Préciser la taille de mémoire RAM (ex: 1024,2048,4096) :" read SIZE_RAM echo "" echo -n " Préciser la taille de Disque (ex: 10G,20G,..) :" read SIZE_DISK echo "" echo -n " Préciser le nombre de CPU - Socket (ex: 1,2,..) :" read SIZE_CPU echo "" echo -n " Préciser le nombre de vCPU - Core (ex: 2,4,6,..):" read SIZE_CORE echo "" echo -n " Préciser le Mot de passe pour le root User :" read PASS echo "" ##### SPECIFICATION des machines virtuelles DATASTORE=DataStore02 PATH_DATA=/mnt/pve/DataStore02 USER=root LAST_VM=`qm list |awk '{print $1}' |grep -v VMID|grep -v $NUMBER_TEMPLATE |tail -1` ###################################################### # Test du réseau en fonction du Switch virtuel utilisé ##################################################### case $VMBR_VM in vmbr0) GATEWAY="192.168.1.1" NAMESERVER="192.168.1.1" DOMAINE="house.cpb" MASK_IP="192.168.1.0" ;; vmbr1) GATEWAY="172.16.185.201" NAMESERVER="172.16.185.1" DOMAINE="house.cpb" MASK_IP="172.16.185.0" ;; vmbr2) GATEWAY="172.32.185.201" NAMESERVER="172.16.185.1" DOMAINE="house.cpb" MASK_IP="172.32.185.0" ;; vmbr3) GATEWAY="172.16.186.201" NAMESERVER="172.16.185.1" DOMAINE="house.cpb" MASK_IP="172.16.186.0" ;; esac ########################################################################################## ### PARTIE DES FONCTIONS ########################################################################################## Deploy_VM () { echo "" echo "" echo "#############################################################################################" echo " Déploiement de la machine $NOM_MACHINE sur l'Infra PROXMOX " echo "###############################################################################################" echo "" #Cherche la derniere machine et déploi sur VM+1 LAST_VM=`expr LAST_VM + 1` #Cherche une IP dispo sur le masque IP_VALID=`nmap -v -sn $MASK_IP/24|grep -v $MASK_IP|grep down |tail -1 |awk '{print $5}'` #Clone du Template qm clone $NUMBER_TEMPLATE $LAST_VM --name $NOM_MACHINE #### Reseau de la machine $NOM_MACHINE qm set $LAST_VM --ipconfig0 ip= "$IP_VALID"/24,gw=$GATEWAY qm set $LAST_VM --searchdomain $DOMAINE qm set $LAST_VM --nameserver $NAMESERVER ## HArdware Machine qm resize $LAST_VM scsi0 $SIZE_DISK qm set $LAST_VM --memory $SIZE_RAM qm set $LAST_VM --core $SIZE_CORE qm set $LAST_VM --socket $SIZE_CPU # User qm set $LAST_VM --ciuser $USER qm set $LAST_VM --cipassword $PASS qm set $LAST_VM --sshkey ~/.ssh/id_rsa.pub # Deplace la VM sur le DATASTORE qm move_disk $LAST_VM scsi0 $DATASTORE --delete #Démarrage de la machine qm start $LAST_VM } ## MAIN Programm Deploy_VM $NUMBER_TEMPLATE $NOM_MACHINE $VMBR_VM $SIZE_DISK $SIZE_RAM $SIZE_CORE $SIZE_CPU $PASS
Views: 34