virt-install

Petit script qui permet la génération de machine virtuelle en ligne de commande (utilisation de la commande virt-install).

Le script (largement améliorable…) accepte 5 arguments dont 2 sont obligatoires.
-$1 = nom de la VM
-$2 = nom du profil d’installation (en fait, j’utilise mes isos, fabriquées avec mes petites mains. Celles ci permettent l’installation de différents profils (voir kickstart-anaconda).
-$3 = nom de l’iso (par défaut : Fedora-Live-Desktop-x86_64-20-1.iso)
-$4 = nombre de disque (par défaut : 1, je ne gère pas d’installation avec plus de 2 disques, à vous de jouer !)
-$5 = volume de/des disques en GiGo (par défaut : 15 Go)

Au niveau de l’exécution, le script génère d’abord la VM puis récupère le tty de la console, envoi une réponse à anaconda qui attend désesperement le nom du profil pour continuer son installation et enfin ouvre une console.
Voilà la bête largement perfectible :

!/bin/bash
exec 1>/tmp/vm.log 2>&1

if [ "${1}" == "" -o  "${2}" == "" ];then
    echo "Necessite deux parametres : <nomVM> <profile>"
    exit 1
fi
#variables
NOMVM=${1}
PROFIL=${2}
ISO="${3:-'Fedora-Live-Desktop-x86_64-20-1.iso'}"
NBDISQUE="${4:-1}"
GIGO=${5:-15} 

echo "Creation de la VM ${NOMVM} avec le profile ${PROFIL}"

#creation de la vm
if [ "${NBDISQUE}" = "1" ]; then
    #un disque
    virt-install --name=${NOMVM} \
        --arch=x86_64 --vcpus=1 --ram=1024 --os-type=linux --os-variant=rhel6 --hvm \
        --connect=qemu:///system --network network:default \
        --cdrom=${ISO} \
        --disk path=/virt/kvm/${NOMVM}_1.img,size=${GIGO},bus=scsi,cache=none \
        --accelerate --vnc --noautoconsole --keymap=fr
    sleep 5
else
    #deux disques
    virt-install --name=${NOMVM} \
        --arch=x86_64 --vcpus=1 --ram=1024 --os-type=linux --os-variant=rhel6 --hvm \
        --connect=qemu:///system --network network:default \
        --cdrom=${ISO} \
        --disk path=/virt/kvm/${NOMVM}_1.img,size=${GIGO},bus=scsi,cache=none \
        --disk path=/virt/kvm/${NOMVM}_2.img,size=${GIGO},bus=scsi,cache=none \
        --accelerate --vnc --noautoconsole --keymap=fr
    sleep 5
fi


#recuperation du /dev/pts
PTS=$(virsh ttyconsole ${NOMVM})
echo "Device de la  console : $PTS"

#envoi du profil a la console
printf "%s\r" "${PROFIL}" > $PTS

#ouverture fenetre VM
nohup virt-viewer  --connect qemu:///system ${NOMVM} &amp;amp;amp;amp;amp;amp;

#petit retour
echo "Creation VM : ${NONVM} en cours !"

Enjoy 🙂