Scripts Vmware

De $1

 

Vmware.png 

Une petite aide pour la création de scripts Vmware ...


http://www.esxguide.com/esx/content/view/2/25/

http://www.vmware.com/support/esx2/doc/vmware-cmd.html

Scripts de sauvegarde Vmware 1.x

Script 1

#! /bin/bash



VMWARE_CMD=/usr/bin/vmware-cmd
DEST_RSYNC=10.114.6.67::Backup/
VMSTATE=NULL
VM=FALSE
VM_HOME=FALSE


function backup

{


$VMWARE_CMD "$VM" suspend

sleep 30

cd "$VM_HOME/"

chmod 777 *

chmod u+X "$VM"

rsync -rz --stats "$VM_HOME" "$DEST_RSYNC"

sleep 30

chmod u+X "$VM"

sleep 30

$VMWARE_CMD "$VM" start

sleep 30

}

##########################################################################

## Backup Imprimantes

VM="/home/Machines/imprimantes/imprimantes.vmx"
VM_HOME="/home/Machines/imprimantes"

backup

####################

## Backup Srv017

VM="/home/Machines/srv017/srv017.vmx"
VM_HOME="/home/Machines/srv017"

backup



exit 0

Script 2

#! /bin/bash



VMWARE_CMD=/usr/bin/vmware-cmd
DEST_RSYNC=10.114.6.67::Backup/
VMSTATE=NULL
VM=FALSE
VM_HOME=FALSE


function snapshot

{
vmrun snapshot "$VM"
sleep 300
}

##########################################################################
## Backup Imprimantes

VM="/home/Machines/imprimantes/imprimantes.vmx"
VM_HOME="/home/Machines/imprimantes"

snapshot

##########################################################################
## Backup Srv017

VM="/home/Machines/srv017/srv017.vmx"
VM_HOME="/home/Machines/srv017"

snapshot


exit 0

Scripts Vmware 2.x

Suspendre une machine virtuelle

vmrun -T server -h http://localhost:8222/sdk -u login -p mot_de_passe suspend "[Nom_de_la_Database] Chemin/Machine.vmx" soft

Lister les Machines virtuelles

vmrun -T server -h http://localhost:8222/sdk -u Login -p Mot_de_passe list

Démarrer une machine virtuelle

 vmrun -T server -h http://localhost:8222/sdk -u Login -p Mot_de_passe start "[Database] Chemin/machine.vmx"

Script 1

Explications

  • Suspend la machine virtuelle
  • Monte un partage réseau
  • Sauvegarde la machine sous forme d'un fichier compressé sur le partage réseau
  • Relance la machine virtuelle
  • Démonte le partage.

Script

#! /bin/bash



SUSPEND_CMD="vmrun -T server -h http://localhost:8222/sdk -u User -p Mot_de_passe suspend"
START_CMD="vmrun -T server -h http://localhost:8222/sdk -u User -p Mot_de_passe start"
DEST_CMD=NULL
DEST=NULL
VM_HOME=NULL
VM_BCKP=NULL


function backup

{

$DEST_CMD

$SUSPEND_CMD "$VM" soft

sleep 30

$VM_BCKP

sleep 30


$START_CMD "$VM"

sleep 30

$LOCAL

}

##########################################################################

## Backup Zimbra

VM="[Datastore] Chemin/Machine.vmx"
VM_HOME="Chemin_du_dossier_de_la_Machine_Virtuelle"
VM_BCKP="tar czvf /mnt/Montage_du_partage/Machine.tgz Chemin_du_dossier_de_la_Machine_Virtuelle"
DEST_CMD="mount -t cifs -o username=User,password=Mot_de_passe //Serveur/Partage/dossier /mnt/Montage_du_partage"
LOCAL="umount /mnt/Montage_du_partage"

backup

####################


exit 0

Script 2

Explications

Au préalable :

Faire un : vmware-vim-cmd vmsvc/getallvms afin d'obtenir le Vmid de la VM


Suspend la VM

Attend 120 s

Crée un tgz de la VM

Attend 120 s

Rsync du dossier de la VM

Attend 120 s

Redémarre la VM


...Ceinture & bretelles

Script

#! /bin/bash




vmware-vim-cmd vmsvc/power.suspend "Vmid"
sleep 120
tar czvf /home/Rsx/Srv005/Srv005_7.tgz /home/Machines/Srv005
sleep 120
rsync -rz /home/Machines/Srv005 /home/Backup/
sleep 120
vmware-vim-cmd vmsvc/power.on "Vmid"

exit

 

#! /bin/bash



RES=1



echo `date +%Y-%m%d-%H:%M` " ; Debut du script Lundi.sh" >> /var/log/Backups.log

echo `date +%Y-%m%d-%H:%M` " ; Synchronisation machine allumée" >> /var/log/Backups.log



rsync -raz -e ssh /home/Machines/Zimbra/ root@vmware005.domaine.local:/home/Machines/Backups/Zimbra/ >> /var/log/Backups.log 2>&1



sleep 120



echo `date +%Y-%m%d-%H:%M` " ; Mise en pause Zimbra" >> /var/log/Backups.log



vmware-vim-cmd vmsvc/power.suspend "16" >> /var/log/Backups.log 2>&1 &





while [ "$RES" -eq "1" ] ; do

sleep 30



vmware-vim-cmd vmsvc/power.getstate 16 | grep Suspended > /dev/null

RES=$?



done



echo `date +%Y-%m%d-%H:%M` " ; Synchronisation machine en pause" >> /var/log/Backups.log



rsync -raz --delete --force --ignore-errors -e ssh /home/Machines/Zimbra/ root@vmware005.domaine.local:/home/Machines/Backups/Zimbra/ >> /var/log/Backups.log 2>&1



sleep 120



echo `date +%Y-%m%d-%H:%M` " ; Redémarrage de Zimbra" >> /var/log/Backups.log



vmware-vim-cmd vmsvc/power.on "16" >> /var/log/Backups.log 2>&1 &



RES=1

while [ "$RES" -eq "1" ] ; do

sleep 30



vmware-vim-cmd vmsvc/power.getstate 16 | grep "Powered on" > /dev/null

RES=$?



done



echo `date +%Y-%m%d-%H:%M` " ; Fin du script Lundi.sh" >> /var/log/Backups.log



exit 0

Options de "Vmrun"

  • start

Démarre la VM

  • stop

Arrête la VM

  • reset

Réinitialise la VM

  • suspend [soft|hard]

Suspend la VM

  • pause

Met la VM en pause

  • unpause

Sort la VM de la pause

Observations

Sur une de mes VM, la commande "vmware-vim-cmd vmsvc/power.suspend ID" provoque un plantage de la carte réseau au redémarrage.

Par contre, la commande "vmrun -T server -h http://localhost:8222/sdk -u User -p Mot_de_passe suspend [database] Chemin_de_la_VM soft" ne provoque pas le plantage.

Autre script pour Vmware serveur 2

Fonctionnement

  • Synchronisation VM allumée
  • Synchronisation VM en pause
  • Envoi d'un mail avec le fichier log en pièce jointe + un résumé dans le corps du message

Script Sauvegardes.sh

#! /bin/bash

RES=1

echo " " >> /var/log/Backups.log
echo `date +%Y-%m%d-%H:%M` " ; Debut du script Sauvegardes.sh" > /var/log/Backups.log
echo `date +%Y-%m%d-%H:%M` " ; Sauvegardes Vmware019" > courrier.txt
echo `date +%Y-%m%d-%H:%M` " ; Synchronisation Zimbra allumé" >> /var/log/Backups.log
echo `date +%Y-%m%d-%H:%M` " ; Synchronisation Zimbra allumé" >> courrier.txt

rsync -rav --stats /home/Machines/Zimbra/ /mnt/Vmware005/Backups/Zimbra/ >> /var/log/Backups.log 2>&1

sleep 120

echo `date +%Y-%m%d-%H:%M` " ; Mise en pause Zimbra" >> /var/log/Backups.log
echo `date +%Y-%m%d-%H:%M` " ; Mise en pause Zimbra" >> courrier.txt

vmware-vim-cmd vmsvc/power.suspend "16" >> /var/log/Backups.log 2>&1 &


while [ "$RES" -eq "1" ] ; do
sleep 30

vmware-vim-cmd vmsvc/power.getstate 16 | grep Suspended > /dev/null
RES=$?

done

echo `date +%Y-%m%d-%H:%M` " ; Synchronisation machine en pause" >> /var/log/Backups.log
echo `date +%Y-%m%d-%H:%M` " ; Synchronisation machine en pause" >> courrier.txt

rsync -rav --stats --delete --force --ignore-errors /home/Machines/Zimbra/ /mnt/Vmware005/Backups/Zimbra/ >> /var/log/Backups.log 2>&1

sleep 120

echo `date +%Y-%m%d-%H:%M` " ; Redémarrage de Zimbra" >> /var/log/Backups.log
echo `date +%Y-%m%d-%H:%M` " ; Redémarrage de Zimbra" >> courrier.txt

vmware-vim-cmd vmsvc/power.on "16" >> /var/log/Backups.log 2>&1 &

RES=1
while [ "$RES" -eq "1" ] ; do
sleep 30

vmware-vim-cmd vmsvc/power.getstate 16 | grep "Powered on" > /dev/null
RES=$?

done

echo `date +%Y-%m%d-%H:%M` " ; Fin du script Sauvegardes.sh" >> /var/log/Backups.log

# Envoi de Backups.log par mail à l'adresse toto@toto.ext
echo `date +%Y-%m%d-%H:%M` " ; Fin de la Sauvegarde" >> courrier.txt
uuencode /var/log/Backups.log Vmware019.log > Vmware019.log
echo "\n" >> courrier.txt
cat Vmware019.log >> courrier.txt
mailx -s "Sauvegardes Vmware019" "toto@toto.ext" < courrier.txt


exit 0

Vmware-vim-cmd

http://engineering.ucsb.edu/~duonglt/vmware/#vmware_vimsh

 

Standard VM operations:

 
 
vmware-vim-cmd vmsvc/power.getstate [VmId]
vmware-vim-cmd vmsvc/power.on [VmId]
vmware-vim-cmd vmsvc/power.off [VmId]
vmware-vim-cmd vmsvc/power.suspend [VmId]
vmware-vim-cmd vmsvc/power.reset [VmId]
vmware-vim-cmd vmsvc/power.shutdown [VmId]
vmware-vim-cmd vmsvc/power.reboot [VmId]
vmware-vim-cmd vmsvc/power.hibernate [VmId]
vmware-vim-cmd vmsvc/snapshot.create [VmId] [snapshotName] [snapshotDescription] [includeMemory]
vmware-vim-cmd "vmsvc/snapshot.create XXXX FIRST_SNAPSHOT MY_FIRST_SNAPSHOT_1"
vmware-vim-cmd vmsvc/snapshot.revert [VmId] [snapshotLevel] [snapshotIndex]
vmware-vim-cmd "vmsvc/snapshot.revert XXXX 1"
vmware-vim-cmd vmsvc/snapshot.removeall [VmId]
vmware-vim-cmd vmsvc/snapshot.remove [VmId] [removeChildren] [snapshotLevel] [snapshotIndex]
vmware-vim-cmd vmsvc/snapshot.get [VmId]
	

Créer un snapshot

  • Vmware serveur 2
vmware-vim-cmd vmsvc/snapshot.create [VMID]

Exemple de script :

#! /bin/bash


echo " " >> /var/log/Backups.log
echo `date +%Y-%m%d-%H:%M` " ; Debut du script Snapshot.sh" >> /var/log/Backups.log


vmware-vim-cmd vmsvc/snapshot.create "16" >> /var/log/Backups.log 2>&1 &


echo `date +%Y-%m%d-%H:%M` " ; Fin du script Snapshot.sh" >> /var/log/Backups.log

exit 0

 

Autre script Vmware

Vmware serveur 2.0.2

Explications :

1) Création d'un snapshot de chaque VM

2) Synchro des VM (allumées) dans le dossier de backup (sur un autre hyperviseur) sans les dossiers.lck

Observations :

Nécessite au préalable un partage de clés ssh

Script :

#! /bin/bash

# --------------------- Synchronisation de VMWARE001 -------------------------

echo " " >> /var/log/vmware003.log
echo `date +%Y-%m%d-%H:%M` " ; Debut du script Synchro.sh" >> /var/log/vmware003.log

echo `date +%Y-%m%d-%H:%M` " ; Debut du Snapshot" >> /var/log/vmware003.log


vmware-vim-cmd vmsvc/snapshot.create "64" >> /var/log/vmware003.log 2>&1 &

sleep 120

vmware-vim-cmd vmsvc/snapshot.create "80" >> /var/log/vmware003.log 2>&1 &

sleep 120

vmware-vim-cmd vmsvc/snapshot.create "96" >> /var/log/vmware003.log 2>&1 &

sleep 120



echo `date +%Y-%m%d-%H:%M` " ; Fin du Snapshot" >> /var/log/vmware003.log

rsync -rav --delete --force --ignore-errors --exclude='*.lck' -e ssh /srv/Machines/Srv001 root@192.168.0.30:/srv/Machines/backups/ >> /var/log/vmware003.log 2>&1
echo `date +%Y-%m%d-%H:%M` " ; Fin de la synchro Srv001" >> /var/log/vmware003.log
rsync -rav --delete --force --ignore-errors --exclude='*.lck' -e ssh /srv/Machines/Srv002 root@192.168.0.30:/srv/Machines/backups/ >> /var/log/vmware003.log 2>&1
echo `date +%Y-%m%d-%H:%M` " ; Fin de la synchro Srv002" >> /var/log/vmware003.log
rsync -rav --delete --force --ignore-errors --exclude='*.lck' -e ssh /srv/Machines/Srv003 root@192.168.0.30:/srv/Machines/backups/ >> /var/log/vmware003.log 2>&1
echo `date +%Y-%m%d-%H:%M` " ; Fin de la synchro Srv003" >> /var/log/vmware003.log

sleep 120


echo `date +%Y-%m%d-%H:%M` " ; Fin de la synchro " >> /var/log/vmware003.log



Script de sauvegarde Snapshot + Rdiff

1° : Snapshot des VM

2° : Rdiff-backup des VM en utilisant le fichier include-list.txt (indication des dossiers à sauvegarder)

3° : Suppression des sauvegardes Rdiff antérieures à 2 semaines

 

#! /bin/bash

# --------------------- Synchronisation de VMWARE001 -------------------------

echo " " >> /var/log/vmware197.log

echo `date +%Y-%m%d-%H:%M` " ; Debut du script Snapshot.sh" >> /var/log/vmware197.log

vmware-vim-cmd vmsvc/snapshot.create "160" >> /var/log/vmware197.log 2>&1 &

sleep 120

vmware-vim-cmd vmsvc/snapshot.create "96" >> /var/log/vmware197.log 2>&1 &

sleep 120

vmware-vim-cmd vmsvc/snapshot.create "224" >> /var/log/vmware197.log 2>&1 &

sleep 120

rdiff-backup --include-globbing-filelist include-list.txt --exclude '**' / /mnt/Nas/Machines/Rdiff

rdiff-backup --remove-older-than 2W --force /mnt/Nas/Machines/Rdiff

echo `date +%Y-%m%d-%H:%M` " ; Fin du script Snapshot.sh" >> /var/log/vmware197.log

 

 howto05_small.pngVous en pensez quoi ?


 

 

 

 
FichierTailleDateAttaché par 
 snapshot.sh
Aucune description
300 octets10:39, 22 Déc 2009franckActions
 synchro.sh
Aucune description
1478 octets16:24, 29 Avr 2010franckActions
Images (0)
 
Commentaires (0)
Vous devez être connecté pour poster un commentaire.