## make dir mkdir -p $BACKUP_PATH_BIN mkdir -p $BACKUP_PATH_DATA mkdir -p $BACKUP_PATH_LOG cd$BACKUP_PATH_DATA
## print hint message="`date` Kubernetes Restore start now. All yaml files which located in path ${BACKUP_PATH_DATA} will be applied." echo${message} 2>&1 >> $RESTORE_LOG_FILE echo${message} echo"`date` If you want to read the record of restore, please input command ' tail -100f ${RESTORE_LOG_FILE} '"
## ask and answer message="WARNING!!! This will create ${file_count} yaml files to kubernetes cluster. While same name resources will be deleted. Please consider it carefully!" echo${message} 2>&1 >> $RESTORE_LOG_FILE echo${message} read -n 1 -p "Do you want to continue? [yes/no/show] " input_char && printf"\n" if [ "${input_char}" == 's' ]; then message="`date` Show yaml files list." echo$message 2>&1 >> $RESTORE_LOG_FILE echo$message ls -n ${BACKUP_PATH_NS}/*.yaml ls -n ${BACKUP_PATH_DATA}/*.yaml exit 1 elif [ "${input_char}" != 'y' ]; then message="`date` Exit by user's selection." echo$message 2>&1 >> $RESTORE_LOG_FILE echo$message exit 2 fi
## create namespace for ns in `ls${BACKUP_PATH_NS}`; do names=`echo${ns}|awk -F'_''{print$1}'` echo"kubectl delete -f ${ns}" 2>&1 >> $RESTORE_LOG_FILE cmd_delete_ns="kubectl delete -f ${BACKUP_PATH_NS}/${ns}" cmd_create_ns="kubectl create -f ${BACKUP_PATH_NS}/${ns}" ## run delete #echo "`date` Run shell: ${cmd_delete_ns}." 2>&1 >> $RESTORE_LOG_FILE #if [ ${ns}'x' != 'kube-systemx' ];then # ${cmd_delete_ns} #fi #result="failed" #if [ $? -eq 0 ]; then # result="ok" #fi ## run create echo"`date` Run shell: ${cmd_create_ns}." 2>&1 >> $RESTORE_LOG_FILE ${cmd_create_ns} result="failed" if [ $? -eq 0 ]; then result="ok" fi echo"`date` Create namespace ${result}." 2>&1 >> $RESTORE_LOG_FILE done
## loop for file list COUNT=0 for file_yaml in$file_list; do COUNT=`expr$COUNT + 1` echo"`date` Restore No.${COUNT} yaml file: ${file_yaml}..." 2>&1 >> $RESTORE_LOG_FILE cmd_delete="kubectl delete -f ${file_yaml}" cmd_create="kubectl create -f ${file_yaml}"
## run delete echo"`date` Run shell: ${cmd_delete}." 2>&1 >> $RESTORE_LOG_FILE ${cmd_delete} result="failed" if [ $? -eq 0 ]; then result="ok" fi echo"`date` Delete resource ${result}." 2>&1 >> $RESTORE_LOG_FILE
## run create echo"`date` Run shell: ${cmd_create}." 2>&1 >> $RESTORE_LOG_FILE ${cmd_create} result="failed" if [ $? -eq 0 ]; then result="ok"
fi echo"`date` Create resource ${result}." 2>&1 >> $RESTORE_LOG_FILE done;
## show stats message="`date` Restore ${COUNT} yaml files in all." echo${message} echo${message} 2>&1 >> $RESTORE_LOG_FILE echo"`date` Kubernetes Restore completed, all done." 2>&1 >> $RESTORE_LOG_FILE exit 0;