Correction du script de sauvegarde

This commit is contained in:
Arnaud GRESSE 2023-12-18 11:15:42 +01:00
parent 133e8fcd05
commit 420caf4aa6

View file

@ -9,48 +9,41 @@ export OS_INTERFACE=public
export OS_APPLICATION_CREDENTIAL_ID=xxxx export OS_APPLICATION_CREDENTIAL_ID=xxxx
export OS_APPLICATION_CREDENTIAL_SECRET=xxxx export OS_APPLICATION_CREDENTIAL_SECRET=xxxx
#Daily Retention export TODAY=$(date +"%Y-%m-%d_%HH%M")
DAILY_RETENTION=7 export LOG_FILE=/var/log/backup/OpenStack_Vms_And_Volumes_${TODAY}.log
#Daily_Retention
export DAILY_RETENTION=15
#Delay to Check Backup in seconds
CHECK_BACKUP_DELAY=3600 CHECK_BACKUP_DELAY=3600
TODAY=$(date +"%Y-%m-%d_%HH%M")
PROJECT_DIR=/opt/backup
LOG_FILE=${PROJECT_DIR}/log/backup_${TODAY}.log
ERR_FILE=${PROJECT_DIR}/log/backup.err
#Let's GO
BCK_VOLUMES_LIST=() BCK_VOLUMES_LIST=()
BCK_SERVERS_LIST=() BCK_SERVERS_LIST=()
cat /dev/null > ${ERR_FILE}
echo "======================================================" >>${LOG_FILE} 2>&1 echo "======================================================" >>${LOG_FILE} 2>&1
date +"[%Y-%m-%d_%HH%M] - Listing instance to be backed up" >>${LOG_FILE} 2>&1 date +"[%Y-%m-%d_%HH%M] - Listing of instances to be backed up" >>${LOG_FILE} 2>&1
echo "======================================================" >>${LOG_FILE} 2>&1 echo "======================================================" >>${LOG_FILE} 2>&1
if SERVERS=$(/usr/bin/openstack server list -f json| jq -r '.[].Name'); then if SERVERS=$(/usr/bin/openstack server list -f json| jq -r '.[].Name'); then
date +"[%Y-%m-%d_%HH%M] ---> Server(s) Found" >>${LOG_FILE} 2>&1 date +"[%Y-%m-%d_%HH%M] ---> Instance(s) found" >>${LOG_FILE} 2>&1
for SERVER in $SERVERS for SERVER in $SERVERS
do do
SNAPSHOT_SERVER=${SERVER}_${TODAY} SNAPSHOT_SERVER=${SERVER}_${TODAY}
date +"[%Y-%m-%d_%HH%M] ------> [Srv : ${SERVER}] === === Starting Backup === ===" >>${LOG_FILE} 2>&1 date +"[%Y-%m-%d_%HH%M] ------> [Instance : ${SERVER}] === === Launching the backup === ===" >>${LOG_FILE} 2>&1
date +"[%Y-%m-%d_%HH%M] ------> [Srv : ${SERVER}] ---> Listing volumes attached" >>${LOG_FILE} 2>&1 date +"[%Y-%m-%d_%HH%M] ------> [Instance : ${SERVER}] ---> Listing of volumes attached" >>${LOG_FILE} 2>&1
if VOLUMES_ATTACHED=$(/usr/bin/openstack server volume list ${SERVER} -f json | jq -r '.[]."Volume ID"'); then if VOLUMES_ATTACHED=$(/usr/bin/openstack server volume list ${SERVER} -f json | jq -r '.[]."Volume ID"'); then
date +"[%Y-%m-%d_%HH%M] ------> [Srv : ${SERVER}] ------> Found volumes attached" >>${LOG_FILE} 2>&1 date +"[%Y-%m-%d_%HH%M] ------> [Srv : ${SERVER}] ------> Attached volume(s) Found" >>${LOG_FILE} 2>&1
for VOLUME_ATTACHED_ID in $VOLUMES_ATTACHED for VOLUME_ATTACHED_ID in $VOLUMES_ATTACHED
do do
VOLUME_ATTACHED_NAME=$(/usr/bin/openstack volume show ${VOLUME_ATTACHED_ID} -f json | jq -r '.name') VOLUME_ATTACHED_NAME=$(/usr/bin/openstack volume show ${VOLUME_ATTACHED_ID} -f json | jq -r '.name')
BCK_VOLUME_ATTACHED_NAME=Backup_${VOLUME_ATTACHED_NAME}_${TODAY} BCK_VOLUME_ATTACHED_NAME=Backup_${VOLUME_ATTACHED_NAME}_${TODAY}
date +"[%Y-%m-%d_%HH%M] ------> [Srv : ${SERVER}] ------> Starting Backup volume from ${VOLUME_ATTACHED_NAME} to ${BCK_VOLUME_ATTACHED_NAME}" >>${LOG_FILE} 2>&1 date +"[%Y-%m-%d_%HH%M] ------> [Srv : ${SERVER}] ------> Launching the backup of the volume ${VOLUME_ATTACHED_NAME} to ${BCK_VOLUME_ATTACHED_NAME}" >>${LOG_FILE} 2>&1
BCK_VOLUMES_LIST+=(${BCK_VOLUME_ATTACHED_NAME}) BCK_VOLUMES_LIST+=(${BCK_VOLUME_ATTACHED_NAME})
/usr/bin/openstack volume backup create --name ${BCK_VOLUME_ATTACHED_NAME} ${VOLUME_ATTACHED_NAME} --force >>${LOG_FILE} 2>&1 /usr/bin/openstack volume backup create --name ${BCK_VOLUME_ATTACHED_NAME} ${VOLUME_ATTACHED_NAME} --force >>${LOG_FILE} 2>&1
done done
@ -63,14 +56,15 @@ if SERVERS=$(/usr/bin/openstack server list -f json| jq -r '.[].Name'); then
BCK_SERVER=Backup_${SERVER}_${TODAY} BCK_SERVER=Backup_${SERVER}_${TODAY}
date +"[%Y-%m-%d_%HH%M] ------> [Srv : ${SERVER}] ---> Starting Snapshot from ${SERVER} to ${BCK_SERVER}" >>${LOG_FILE} 2>&1 date +"[%Y-%m-%d_%HH%M] ------> [Srv : ${SERVER}] ---> Launching the Snapshot of the instance ${SERVER} to ${BCK_SERVER}" >>${LOG_FILE} 2>&1
BCK_SERVERS_LIST+=(${BCK_SERVER}) BCK_SERVERS_LIST+=(${BCK_SERVER})
/usr/bin/openstack server backup create --rotate ${DAILY_RETENTION} --name ${BCK_SERVER} ${SERVER} >>${LOG_FILE} 2>&1 /usr/bin/openstack server backup create --rotate ${DAILY_RETENTION} --name ${BCK_SERVER} ${SERVER} >>${LOG_FILE} 2>&1
date +"[%Y-%m-%d_%HH%M] ------> [Srv : ${SERVER}] === === End of Backup === ===" >>${LOG_FILE} 2>&1 date +"[%Y-%m-%d_%HH%M] ------> [Srv : ${SERVER}] === === End of the backup === ===" >>${LOG_FILE} 2>&1
done done
else else
echo "No Server found" >>${LOG_FILE} 2>&1 echo "No instance found" >>${LOG_FILE} 2>&1
fi fi
echo "======================================================" >>${LOG_FILE} 2>&1 echo "======================================================" >>${LOG_FILE} 2>&1
@ -79,7 +73,7 @@ echo "======================================================" >>${LOG_FILE} 2>&
MAXIMUM_TIMESTAMP=`date -d '+'${CHECK_BACKUP_DELAY}' seconds' '+%s'` MAXIMUM_TIMESTAMP=`date -d '+'${CHECK_BACKUP_DELAY}' seconds' '+%s'`
date +"[%Y-%m-%d_%HH%M] => Checking Backup Volumes" >>${LOG_FILE} 2>&1 date +"[%Y-%m-%d_%HH%M] => Checking the backup of volumes" >>${LOG_FILE} 2>&1
for CHECK_BCK_VOLUME in ${BCK_VOLUMES_LIST} for CHECK_BCK_VOLUME in ${BCK_VOLUMES_LIST}
do do
RESULT=false RESULT=false
@ -90,7 +84,6 @@ do
CURRENT_TIMESTAMP=`date +%s` CURRENT_TIMESTAMP=`date +%s`
if [ "$CURRENT_TIMESTAMP" -gt "$MAXIMUM_TIMESTAMP" ]; then if [ "$CURRENT_TIMESTAMP" -gt "$MAXIMUM_TIMESTAMP" ]; then
date +"[%Y-%m-%d_%HH%M] [ERROR] backup for ${CHECK_BCK_VOLUME} verification time expired" >>${LOG_FILE} 2>&1 date +"[%Y-%m-%d_%HH%M] [ERROR] backup for ${CHECK_BCK_VOLUME} verification time expired" >>${LOG_FILE} 2>&1
date +"[%Y-%m-%d_%HH%M] [ERROR] backup for ${CHECK_BCK_VOLUME} verification time expired" >>${ERR_FILE}
exit -1 exit -1
fi fi
@ -111,7 +104,6 @@ do
CURRENT_TIMESTAMP=`date +%s` CURRENT_TIMESTAMP=`date +%s`
if [ "$CURRENT_TIMESTAMP" -gt "$MAXIMUM_TIMESTAMP" ]; then if [ "$CURRENT_TIMESTAMP" -gt "$MAXIMUM_TIMESTAMP" ]; then
date +"[%Y-%m-%d_%HH%M] [ERROR] backup for ${CHECK_BCK_SERVER} verification time expired" >>${LOG_FILE} 2>&1 date +"[%Y-%m-%d_%HH%M] [ERROR] backup for ${CHECK_BCK_SERVER} verification time expired" >>${LOG_FILE} 2>&1
date +"[%Y-%m-%d_%HH%M] [ERROR] backup for ${CHECK_BCK_VOLUME} verification time expired" >>${ERR_FILE}
exit -1 exit -1
fi fi
@ -136,7 +128,7 @@ if OLD_VOLUMES=$(/usr/bin/openstack volume backup list -f json | jq -r '.[].Name
for OLD_VOLUME in $OLD_VOLUMES for OLD_VOLUME in $OLD_VOLUMES
do do
date +"[%Y-%m-%d_%HH%M] ------> Remove Backup Volume ${OLD_VOLUME}" >>${LOG_FILE} 2>&1 date +"[%Y-%m-%d_%HH%M] ------> Remove Backup Volume ${OLD_VOLUME}" >>${LOG_FILE} 2>&1
/usr/local/bin/openstack volume backup delete ${OLD_VOLUME} >>${LOG_FILE} 2>&1 /usr/bin/openstack volume backup delete ${OLD_VOLUME} >>${LOG_FILE} 2>&1
done done
else else
@ -154,7 +146,7 @@ if OLD_INSTANCES=$(/usr/bin/openstack image list -f json| jq -r '.[].Name|select
for OLD_INSTANCE in $INSTANCES for OLD_INSTANCE in $INSTANCES
do do
date +"[%Y-%m-%d_%HH%M] ------> Remove Backup Instance ${OLD_INSTANCE}" >>${LOG_FILE} 2>&1 date +"[%Y-%m-%d_%HH%M] ------> Remove Backup Instance ${OLD_INSTANCE}" >>${LOG_FILE} 2>&1
/usr/local/bin/openstack image delete ${OLD_INSTANCE} >>${LOG_FILE} 2>&1 /usr/bin/openstack image delete ${OLD_INSTANCE} >>${LOG_FILE} 2>&1
done done
else else