Introduzione
Ho installato vmware server ad un cliente con connettività lentissima, per cui era impossibile aggiungere e togliere macchine virtuali dalla GUI di Vmware, per questo ho creato una macchina master e poi ho creato questi script per la creazione / modifica / cancellazione / consultazione dello stato delle macchine.
Creazione di una macchina virtuale (script add_vm)
Questo script permette la clonazione della macchina master (il path della macchina master DEVE essere: /var/lib/vmware/Virtual Machines/master) rinominandola a nostra scelta e permette la scelta della quantità di ram da associare alla macchina. ATTENZIONE: La macchina master deve essere stata creata con:
- Nome file di configurazione: Other Linux Kernel 2.6
- Nome file degli hard disk: master
altrimenti lo script non funziona.
#!/bin/bash
# Questo script crea una macchina virtuale e la manda in esecuizione
#
if [ $# = 0 ]; then
echo "usage : $0 <nome_vm> <ram_vm>";
exit 1;
fi
if [ $# = 1 ]; then
echo "usage : $0 <nome_vm> <ram_vm>";
exit 2;
fi
echo -e "Sto clonando la macchina master. Attendere prego";
cp -ax /var/lib/vmware/Virtual Machines/master/ /var/lib/vmware/Virtual Machines/$1;
cd /var/lib/vmware/Virtual Machines/$1;
/usr/bin/vmware-vdiskmanager -n master.vmdk $1.vmdk;
sed -i "s/master.vmdk/${1}.vmdk/g" Other Linux 2.6.x kernel.vmx;
sed -i "s/master/${1}/g" Other Linux 2.6.x kernel.vmx;
sed -i "s/memsize = "256"/memsize = "${2}"/" Other Linux 2.6.x kernel.vmx;
sed -i "/uuid/d" Other Linux 2.6.x kernel.vmx;
/usr/bin/vmware-cmd -s register /var/lib/vmware/Virtual Machines/$1/Other Linux 2.6.x kernel.vmx;
echo -e "La virtual machine e' registrata.";
echo -e "Starting virtual machine Per gli avvii successivi usare l'interfaccia web o lo script start_vm";
/usr/bin/vmware-cmd /var/lib/vmware/Virtual Machines/$1/Other Linux 2.6.x kernel.vmx start;
echo -e "Attendere il completo avvio - circa 20 secondi - prima di provare l'accesso";
Cancellazione di una macchina virtuale (script rm_vm)
Questo script cancella la macchina virtuale da vmware server (unregister) ma non dal disco.
#!/bin/bash
# Script per cancellare una vm
#
if [ $# = 0 ]; then
echo "usage : $0 <nome_vm>";
exit 1;
fi
#
/usr/bin/vmware-cmd -s unregister /var/lib/vmware/Virtual Machines/$1/Other Linux 2.6.x kernel.vmx;
echo -e "Cancellare manualmente la dir /var/lib/vmware/Virtual Machines/$1";
Visualizzazione stato di una macchina (script state_vm)
Questo script visualizza lo stato (on / off) di una macchina virtuale
#!/bin/bash
#
#if [ $# = 0 ]; then
echo "usage : $0 <nome_vm>";
exit 1;
fi
#
#/usr/bin/vmware-cmd /var/lib/vmware/Virtual Machines/$1/Other Linux 2.6.x kernel.vmx getstate;
Visualizzazione dello stato di tutte le macchine virtuali esclusa la master (script view_vm)
L’output di questo script è il seguente: numero_macchina – nome_macchina – on/off – memoria_ram_massima
#!/bin/bash
#
/usr/bin/vmware-cmd -l | awk -F '/' {'print $6'} | grep -v master > /tmp/view;
echo -e "*** Sono presenti $(cat /tmp/view$numero | wc -l) Macchine virtuali ***";
num=1;
for i in $(cat /tmp/view);
do
state=$(/usr/bin/vmware-cmd /var/lib/vmware/Virtual Machines/$i/Other Linux 2.6.x kernel.vmx getstate | awk {'print $3'});
ram=$(vmware-cmd /var/lib/vmware/Virtual Machines/$i/Other Linux 2.6.x kernel.vmx getconfig memsize | awk {'print $3'});
echo -e "$num - $i - $state - $ram MB";
((num++));
done;
rm /tmp/view;
Avvio di una macchina virtuale da linea di comando
#!/bin/bash
#
#if [ $# = 0 ]; then
echo "usage : $0 <nome_vm>"
exit 1;
#fi
/usr/bin/vmware-cmd /var/lib/vmware/Virtual Machines/$1/Other Linux 2.6.x kernel.vmx start;
Arresto di una macchina virtuale da linea di comando (richiede vmware tools installati)
#!/bin/bash
#
#if [ $# = 0 ]; then
echo "usage : $0 <nome_vm>"
exit 1;
#fi
/usr/bin/vmware-cmd /var/lib/vmware/Virtual Machines/$1/Other Linux 2.6.x kernel.vmx stop;
Invio di un comando custom ad una macchina virtuale da linea di comando (specificando solo il nome e non il path di configurazione)
#!/bin/bash # /usr/bin/vmware-cmd /var/lib/vmware/Virtual Machines/$1/Other Linux 2.6.x kernel.vmx $2;
Footer
Per ogni inesattezza, modifica, commento o insulto, vi prego di contattarmi via mail a [email protected].
