sabato 21 aprile 2007

VMVoodooSync

Questo è un piccolo script per sincronizzara un virtual machine tra due server esx con storage locale.

Per prima cosa si devono creare le chiavi ssh per l'accesso tra i due server. Per facilitare tutte le procedure di copia tra i due server si userà l'utente root.

1. Abilitare su entrambi i server l'accesso ssh come root
2. Creare le chiavi ssh su entrambi i server
3. Configurare vcb
4. Creare la directory di stage dei file vmdk
5. Creare lo script di sincronizzazione
6. Abilitare il firewall per le connessioni ssh in uscita
7. Testare lo script
8. Configurare cron per le schedulazioni delle sincronizzazioni

# vi /etc/ssh/sshd_config
PermitRootLogin yes
# /etc/init.d/sshd restart
# ssh-keygen -t dsa
Non digitare nessuna password per la decriptazione delle chiavi
# scp .ssh/id_dsa.pub root@esx02:~root/.ssh/authorized_keys
# ssh root@esx02
Se tutto va bene il login non dovrebbe richiedere nessuna password

Dato che la password di root in questo esempio viene scritta in chiaro nel file di vcb, è altamente consigliabile creare un utente aggiuntivo e da ViClient dargli i permessi minimi per creare e rimunovere gli snapshots
# vi /etc/vmware/backuptools.conf
modificate le seguenti voci
VCHOST=localhost
USERNAME=root
PASSWORD=root_password
TEMPDIR=/vmfs/volumes/storage1/tmp_backup

La directory di stage del backup deve essere abbastanza grande per contenere la virtual machine di maggior dimensioni.
# mkdir /vmfs/volumes/storage1/tmp_backup

Ora creiamo lo script di sincronizzazione
# mkdir /opt/script
# vi /opt/script/vmvoodoosync.sh

#!/bin/bash

PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"

DATE="$(date +%d-%m-%Y)"
HOST="`hostname -s`"
HOSTDR="192.168.192.99"

LOG="/vmfs/volumes/storage1/tmp_backup/Backuplog-$DATE.log"

echo "Backup $HOST started at `date`" > $LOG

for vmname in `/usr/sbin/vcbVmName -s powerstate:on |grep name: | awk -F: '{print $2}'`;
do ssh backupusr@$HOSTDR "mkdir -p /vmfs/volumes/storage1/$vmname"
/usr/sbin/vcbMounter -a name:$vmname -M 1 \
-r scp://backupusr@$HOSTDR:/vmfs/volumes/storage1/$vmname >> $LOG
done

echo "Backup $HOST finished at `date`" >> $LOG


Apriamo le porte del firewall su entrambi gli host
# esxcfg-firewall -e sshServer
# ssh root@esx02 -c " /usr/sbin/esxcfg-firewall -e sshServer"

Ora testiamo lo script.. ma prima ve reso eseguibile
# chmod 755 /opt/script/vmvoodoosync.sh
# /opt/script/vmvoodoosync.sh

Per verificare il corretto funzionamento dell0 script potete verificare il file di log all'interno della directory di stage

Se tutto è andato bene potete configurare la schedulazione
# contrab -e
30 20 * * * /opt/script/vmvoodoosync.sh