Pour l'accès à la console de ESXi, merci de lire cet article et cet article
Il est possible de créer un SnapShot nommé « vcb_snap » depuis la console SSH de ESXi avec la séquence suivante :
[shell]export VM_NAME=xpexport VMWARE_CMD=/bin/vim-cmd
echo "VM_NAME: $VM_NAME"
# get VM_ID
${VMWARE_CMD} vmsvc/getallvms | sed 's/[[:blank:]]{3,}/ /g' | awk -F' ' '{print """$1"";""$2"";""$3"""}' | sed 's/] /]";"/g' | sed '1,1d' > /tmp/vms_list
export VM_ID='grep -E ""${VM_NAME}"" /tmp/vms_list | awk -F ";" '{print $1}' | sed 's/"//g''
echo "VM_ID: $VM_ID"
echo "Create snapshot"
${VMWARE_CMD} vmsvc/snapshot.create ${VM_ID} vcb_snap VCB_BACKUP_${VM_NAME}_'date +%F'[/shell]
La procédure est un peu complexe car les outils en mode console ne savent pas exploiter le nom des VM, seulement l'identifiant interne à ESXi. La première partie du code retrouve le code associé à une VM.
La suppression du SnapShot est un peu plus complexe car il existe bien une commande "snapshot.remove" mais elle est très mal documentée. L'exemple ci-dessous semble fonctionner même s'il génère une erreur. La première partie du code liste les caractéristiques de tous les snapshots de la VM et traite le fichier résultant pour calculer le nombre de SnapShots associés à la VM (4 Snapshots numérotés de 0 à 3, par exemple). Le script supprime simplement le dernier.
[shell]export VM_NAME=xpexport VMWARE_CMD=/bin/vim-cmd
echo "VM_NAME: $VM_NAME"
${VMWARE_CMD} vmsvc/snapshot.get ${VM_ID} > /tmp/snp_list
export SNP_COUNT='grep datastoreUrl /tmp/snp_list|wc -l'
let "SNP_COUNT=$SNP_COUNT-1"
echo "remove snapshot $SNP_COUNT"
${VMWARE_CMD} vmsvc/snapshot.remove ${VM_ID} vcb_snap ${SNP_COUNT}[/shell]
SynerGeek.fr Informatique & Veille Technologique
