From 133e8fcd05750b9875465065e9a631d4eefae88b Mon Sep 17 00:00:00 2001 From: Arnaud GRESSE Date: Mon, 13 Nov 2023 16:18:53 +0100 Subject: [PATCH] fix backup openstack script --- Backup_OpenStack_Vms_And_Volumes.sh | 49 ++++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/Backup_OpenStack_Vms_And_Volumes.sh b/Backup_OpenStack_Vms_And_Volumes.sh index 4347a5c..fb2776b 100644 --- a/Backup_OpenStack_Vms_And_Volumes.sh +++ b/Backup_OpenStack_Vms_And_Volumes.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash +#OS Credentials and settings export OS_AUTH_TYPE=xxxx export OS_AUTH_URL=xxxx export OS_IDENTITY_API_VERSION=xxx @@ -8,15 +9,24 @@ export OS_INTERFACE=public export OS_APPLICATION_CREDENTIAL_ID=xxxx export OS_APPLICATION_CREDENTIAL_SECRET=xxxx -TODAY=$(date +"%Y-%m-%d_%HH%M") +#Daily Retention DAILY_RETENTION=7 +#Delay to Check Backup in seconds +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_SERVERS_LIST=() +cat /dev/null > ${ERR_FILE} + echo "======================================================" >>${LOG_FILE} 2>&1 date +"[%Y-%m-%d_%HH%M] - Listing instance to be backed up" >>${LOG_FILE} 2>&1 echo "======================================================" >>${LOG_FILE} 2>&1 @@ -67,17 +77,48 @@ echo "======================================================" >>${LOG_FILE} 2>& date +"[%Y-%m-%d_%HH%M] - Confirm that's all backup is OK" >>${LOG_FILE} 2>&1 echo "======================================================" >>${LOG_FILE} 2>&1 -date +"[%Y-%m-%d_%HH%M] => Checking Backup Volumes" >>${LOG_FILE} 2>&1 +MAXIMUM_TIMESTAMP=`date -d '+'${CHECK_BACKUP_DELAY}' seconds' '+%s'` +date +"[%Y-%m-%d_%HH%M] => Checking Backup Volumes" >>${LOG_FILE} 2>&1 for CHECK_BCK_VOLUME in ${BCK_VOLUMES_LIST} do - ##TODO faire une variable qui recup tous les instances sauvegardées précédements et checker + RESULT=false + while [ ! "$RESULT" = "true" ]; + do + date +"[%Y-%m-%d_%HH%M] Checking Backup for ${CHECK_BCK_VOLUME} and waiting 60 secondes" >>${LOG_FILE} 2>&1 + + CURRENT_TIMESTAMP=`date +%s` + 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" >>${ERR_FILE} + exit -1 + fi + + RESULT=`openstack volume backup show ${CHECK_BCK_VOLUME} -f json | jq -r '.status == "available"'` + sleep 60 + done + date +"[%Y-%m-%d_%HH%M] Backup Volume ${CHECK_BCK_VOLUME} is OK" >>${LOG_FILE} 2>&1 done date +"[%Y-%m-%d_%HH%M] => Checking Backup Instance" >>${LOG_FILE} 2>&1 for CHECK_BCK_SERVER in ${BCK_SERVERS_LIST} do - ##TODO faire une variable qui recup tous les instances sauvegardées précédements et checker + RESULT=false + while [ ! "$RESULT" = "true" ]; + do + date +"[%Y-%m-%d_%HH%M] Checking Backup for ${CHECK_BCK_SERVER} and waiting 60 secondes" >>${LOG_FILE} 2>&1 + + CURRENT_TIMESTAMP=`date +%s` + 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_VOLUME} verification time expired" >>${ERR_FILE} + exit -1 + fi + + RESULT=`/usr/bin/openstack image show ${CHECK_BCK_SERVER} -f json | jq -r '.properties.image_state == "available" and .status == "active"'` + sleep 60 + done + date +"[%Y-%m-%d_%HH%M] Backup Instance ${CHECK_BCK_SERVER} is OK" >>${LOG_FILE} 2>&1 done echo "======================================================" >>${LOG_FILE} 2>&1