VMWare ESXi: Programar tareas con el crontab y que no se borre al reiniciar el equipo

Hay que programar las tareas en el crontab del ESXi en /var/spool/cron/crontabs/root
Como es de solo lectura hay que darle permisos previamente con chmod +t root y con chmod 755 root.
Luego programamos las tareas por ejemplo en root:
#min hour day mon dow command
1 1 * * * /sbin/tmpwatch.py
1 * * * * /sbin/auto-backup.sh
0 * * * * /usr/lib/vmware/vmksummary/log-heartbeat.py
*/5 * * * * /sbin/hostd-probe ++group=host/vim/vmvisor/hostd-probe
00 00 28 2,5,8,11 * /vmfs/volumes/datastore1/scriptCopiaAgenda.sh >> /vmfs/volumes/iSCSI-DATASTORE-3/logsVMWare
00 00 10 * * /vmfs/volumes/datastore1/scriptCopiaWeb.sh >> /vmfs/volumes/iSCSI-DATASTORE-3/logsVMWare
30 15 * * 6 /vmfs/volumes/datastore1/scriptCopiaWeb.sh >> /vmfs/volumes/iSCSI-DATASTORE-3/logsVMWare

Tener en cuenta que el cron va de 0-6 donde 0 es domingo y 6 sabado.
Usar una unidad externa que no sea datastore para almacenar logs sino también lo borrará al reiniciar la máquina.
Entonces crearemos un script que haga por ejemplo una copia con instrucciones de la api del ESXi:

#
#!/bin/bash
#
# Fecha
FECHA=`date +%d-%m-%Y`
#nombre de la máuqina
MAQUINA='miagenda'
# ID de la máquina que lo podemos saber ejecutando antes "vim-cmd vmsvc/getallvms"
VMID='35'
ORIGEN='/vmfs/volumes/iSCSI-DATASTORE-3'
# lo guardo en un NAS que tengo montado por NFS
NAS='/vmfs/volumes/CopiasVMWare/copias244'

# Paramos la maquina virtual
echo "Parando la máquina virtual de $MAQUINA con VMID: $VMID"
echo "Hora:" $(date)
vim-cmd vmsvc/power.off $VMID

echo "Copiamos maquina en "$NAS/$MAQUINA-$FECHA
mkdir $NAS/$MAQUINA-$FECHA
cp -r $ORIGEN/$MAQUINA/* $NAS/$MAQUINA-$FECHA/

# Arrancamos la maquina virtual
echo "Arrancamos la máquina virtual de $MAQUINA con VMID: $VMID"
echo "Hora:" $(date)
vim-cmd vmsvc/power.on $VMID

Ahora para que no se pierdan los cambios al apagar la máquina, ya que sino ponemos lo siguiente en el /etc/rc.local.d/local.sh nuestro cron se reseteara a estado de fábrica por una memoria que restablece ciertos ficheros del sistema. Entonces para no perder nuestro sistema de copias que ya hemos programado ponemos lo siquiente en /etc/rc.local.d/local.sh:

#!/bin/sh

# local configuration options

# Note: modify at your own risk! If you do/use anything in this
# script that is not part of a stable API (relying on files to be in
# specific places, specific tools, specific output, etc) there is a
# possibility you will end up with a broken system after patching or
# upgrading. Changes are not supported unless under direction of
# VMware support.

/bin/echo "00 00 28 2,5,8,11 * /vmfs/volumes/datastore1/scriptCopiaAgenda.sh >> /vmfs/volumes/iSCSI-DATASTORE-3/logsVMWare" >> /var/spool/cron/crontabs/root
/bin/echo "00 00 10 * * /vmfs/volumes/datastore1/scriptCopiaWeb.sh >> /vmfs/volumes/iSCSI-DATASTORE-3/logsVMWare" >> /var/spool/cron/crontabs/root
/bin/echo "30 15 * * 6 /vmfs/volumes/datastore1/scriptCopiaWeb.sh >> /vmfs/volumes/iSCSI-DATASTORE-3/logsVMWare" >> /var/spool/cron/crontabs/root

exit 0

Así reescribe el fichero root cuando reiniciemos la máquina.

Espero que haya sido de utilidad.

Leave a Reply