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].