|
|
Scripts VmwareDe $1Sommaire
Que pensez-vous de cet article?
Sommaire
Une petite aide pour la création de scripts Vmware ...
http://www.vmware.com/support/esx2/doc/vmware-cmd.html Scripts de sauvegarde Vmware 1.xScript 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.xSuspendre une machine virtuellevmrun -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 virtuellesvmrun -T server -h http://localhost:8222/sdk -u Login -p Mot_de_passe list Démarrer une machine virtuellevmrun -T server -h http://localhost:8222/sdk -u Login -p Mot_de_passe start "[Database] Chemin/machine.vmx" Script 1Explications
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 2ExplicationsAu préalable : Faire un : vmware-vim-cmd vmsvc/getallvms afin d'obtenir le Vmid de 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
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"
Démarre la VM
Arrête la VM
Réinitialise la VM
Suspend la VM
Met la VM en pause
Sort la VM de la pause ObservationsSur 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 2Fonctionnement
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-cmdhttp://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-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 VmwareVmware 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
Mots clés:
|