MODOP – Déploiement d’une VM/Template via Menu BASH- Proxmox

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *