Preface
This guide describe how to take a scheduled daily volumes snapshots from all or some volumes on STC Jeddah cloud and retaining only N days. The following steps was tested on ubuntu 16.04 server that has openstack clients installed.
ssh to the server
- Install Openstack Clients in Ubuntu:
sudo snap install openstackclients --classic
mkdir /home/ubuntu/volumes-snapshots
cd /home/ubuntu/volumes-snapshots
- Create openrc.sh file using your favorite editor.
- To access STC Jeddah Cloud
JED1
:
nano openrc.sh
Copy the following text to the file and change the Username and the Project name to yours (without the quotation marks), then save and exit.
export OS_USERNAME='Enter Your Username'
echo "enter the password"
read -sr OS_PASSWORD
export OS_PASSWORD=$OS_PASSWORD
export OS_TENANT_NAME='Enter Your Project Name'
export OS_AUTH_URL=https://api-jed1-vdc.bluvalt.com/identity/v3
export OS_IDENTITY_API_VERSION=3
export OS_USER_DOMAIN_NAME=jed1
export OS_PROJECT_DOMAIN_NAME=jed1
Then run:
source openrc.sh
- To access STC Riyadh2 Cloud
RUH2
:
nano openrc.sh
Copy the following text to the file and change username, password and project name to yours (without the quotation marks), then save and exit.
export OS_USERNAME='Enter Your Username'
echo "enter the password"
read -sr OS_PASSWORD
export OS_PASSWORD=$OS_PASSWORD
export OS_TENANT_NAME='Enter Your Project Name'
export OS_AUTH_URL=https://api-ruh2-vdc.bluvalt.com/identity/v3
export OS_IDENTITY_API_VERSION=3
export OS_USER_DOMAIN_NAME=ruh2
export OS_PROJECT_DOMAIN_NAME=ruh2
Then run:
source openrc.sh
Taking a Scheduled Daily Volumes Snapshots
- List all volumes IDs on the project and save it to volumes-IDs file:
openstack volume list |awk -F '|' '{print $2}'|grep -v ID|grep -v -e '^$'>/home/ubuntu/volumes-snapshots/volumes-IDs
You can exclude any volumes from this list by removing its ID from volumes-IDs file.
- Create a file named snapshots-creation.sh:
nano snapshots-creation.sh
- If Your Volumes in STC Jeddah Cloud
JED1
:
Insert the following script to the file:
#!/bin/sh
PATH=$PATH
export OS_USERNAME='username'
export OS_PASSWORD='password'
export OS_TENANT_NAME='project name'
export OS_AUTH_URL=https://api-jed1-vdc.bluvalt.com/identity/v3
export OS_IDENTITY_API_VERSION=3
export OS_USER_DOMAIN_NAME=jed1
export OS_PROJECT_DOMAIN_NAME=jed1
for i in $(cat /home/ubuntu/volumes-snapshots/volumes-IDs); do openstack volume snapshot create --force --volume $i `date +%F`-$i-snapshot |grep -m1 id|awk -F '|' '{print $3}'|grep -v -e '^$'; sleep 20s; done >>/home/ubuntu/volumes-snapshots/`date +%F`-snapshots
- If Your Volumes in STC Riyadh CLOUD
RUH2
:
Insert the following script to the file:
PATH=$PATH
export OS_USERNAME='username'
export OS_PASSWORD='password'
export OS_TENANT_NAME='project name'
export OS_AUTH_URL=https://api-ruh2-vdc.bluvalt.com/identity/v3
export OS_IDENTITY_API_VERSION=3
export OS_USER_DOMAIN_NAME=ruh2
export OS_PROJECT_DOMAIN_NAME=ruh2
for i in $(cat /home/ubuntu/volumes-snapshots/volumes-IDs); do openstack volume snapshot create --force --volume $i `date +%F`-$i-snapshot |grep -m1 id|awk -F '|' '{print $3}'|grep -v -e '^$'; sleep 20s; done >>/home/ubuntu/volumes-snapshots/`date +%F`-snapshots
Don’t forget to remove the quotation marks
.
Now, save and exit.
- Create a file named old-snapshots-cleaning.sh:
Create old snapshots cleaning script that will remove any older than N days snapshots which was created by first script (snapshots-creation.sh), change username, password and project name to yours, then save it as old-snapshots-cleaning.sh file
:
nano old-snapshots-cleaning.sh
- If Your Volumes in STC Jeddah CLOUD
JED1
:
Insert the following script to the file:
#!/bin/sh
PATH=$PATH
export OS_USERNAME='username'
export OS_PASSWORD='password'
export OS_TENANT_NAME='project name'
export OS_AUTH_URL=https://api-jed1-vdc.bluvalt.com/identity/v3
export OS_IDENTITY_API_VERSION=3
export OS_USER_DOMAIN_NAME=jed1
export OS_PROJECT_DOMAIN_NAME=jed1
for i in $(cat /home/ubuntu/volumes-snapshots/$(date -d 'now -N days' +%F)-snapshots); do openstack volume snapshot delete $i; sleep 10s; done
- If Your Volumes in STC Riyadh2 CLOUD
RUH2
:
Insert the following script to the file:
PATH=$PATH
export OS_USERNAME='username'
export OS_PASSWORD='password'
export OS_TENANT_NAME='project name'
export OS_AUTH_URL=https://api-ruh2-vdc.bluvalt.com/identity/v3
export OS_IDENTITY_API_VERSION=3
export OS_USER_DOMAIN_NAME=ruh2
export OS_PROJECT_DOMAIN_NAME=ruh2
for i in $(cat /home/ubuntu/volumes-snapshots/$(date -d 'now -N days' +%F)-snapshots); do openstack volume snapshot delete $i; sleep 10s; done
Replace N in ‘now -N days’ in last command with number of days you need to retain the created snapshots.THIS SCRIPT ONLY WORKS WITH DAILY SNAPSHOTS.
Add Cronjob
Add a crontab job to execute the scripts at your convenient time Please don’t forget to calculate the needed quota and request to increase storage quota if needed.
- Make the scripts executable:
chmod a+x /home/ubuntu/volumes-snapshots/snapshots-creation.sh
chmod a+x /home/ubuntu/volumes-snapshots/old-snapshots-cleaning.sh
- Access cronjob:
sudo crontab -e
- Create the cronjob with specifying the time you need the volumes snapshots to be taken at and store logs in /var/log/cron-job.log file:
30 01 * * * /home/ubuntu/volumes-snapshots/snapshots-creation.sh >> /var/log/cron-job.log 2>&1
30 18 * * * /home/ubuntu/volumes-snapshots/old-snapshots-cleaning.sh >> /var/log/cron-job.log 2>&1