feat: create new block storage volume and migrate data

This commit is contained in:
José Oliveira 2021-05-26 14:41:07 +01:00 committed by Josh Harvey
parent 41f3f7f28f
commit 554b9f29e1
2 changed files with 214 additions and 0 deletions

View file

@ -0,0 +1,80 @@
#!/bin/bash
set -e
if [ $# -eq 0 ]
then
echo "usage: bash createblockstorage.sh [droplet-name]" && exit 1
fi
DROPLET_NAME=$1
#Install doctl
echo "Installing doctl..."
sudo snap install doctl
#Create config folder as suggested in doctl documentation
sudo mkdir -p ~/.config
#Access doctl account
echo "Accessing digital ocean account..."
doctl auth init --context data-migration
doctl auth switch --context data-migration
#Get droplet region and id
echo "Fetching droplet information..."
DROPLET_INFO=$(doctl compute droplet get $DROPLET_NAME --format "ID, Region")
DROPLET_ID=$(echo $DROPLET_INFO | awk '{ print $3; }')
REGION=$(echo $DROPLET_INFO | awk '{ print $4; }')
#Create a new volume and attach it to the droplet
echo "Creating a new volume..."
VOLUME_ID=$(doctl compute volume create --region $REGION --size 10GiB lamassu-data --format "ID" | sed -n 2p)
echo "Attaching to the droplet..."
doctl compute volume-action attach $VOLUME_ID $DROPLET_ID
#Create partition and format
echo
echo "Creating a new partition..."
echo
sudo apt-get update
yes | sudo apt-get install parted
sudo parted /dev/disk/by-id/scsi-0DO_Volume_lamassu-data mklabel gpt
sudo parted -a opt /dev/disk/by-id/scsi-0DO_Volume_lamassu-data mkpart primary ext4 0% 100%
echo
echo "Formatting the new volume..."
echo
sleep 4
sudo mkfs.ext4 -L lamassudata /dev/disk/by-id/scsi-0DO_Volume_lamassu-data-part1
#Mounting the new volume
echo
echo "Mounting the new volume..."
echo
sudo mkdir -p /mnt/lamassu-data
sudo mount -o defaults,nofail,discard,noatime /dev/disk/by-id/scsi-0DO_Volume_lamassu-data-part1 /mnt/lamassu-data
#Persistent mounting
echo "/dev/disk/by-id/scsi-0DO_Volume_lamassu-data-part1 /mnt/lamassu-data ext4 defaults,nofail,discard,noatime 0 2" | sudo tee -a /etc/fstab
echo
echo "New block storage volume successfully installed!"
echo "Can be accessed at: /mnt/lamassu-data"
echo

134
digitalocean/migratedata.sh Normal file
View file

@ -0,0 +1,134 @@
#!/bin/bash
set -e
echo
echo "Initializing data migration to the new block storage volume..."
echo
NEW_VOLUME_MOUNTING_POINT=/mnt/lamassu-data
CERT_DIR=/etc/ssl/certs
KEY_DIR=/etc/ssl/private
CONFIG_DIR=/etc/lamassu
LAMASSU_CA_PATH=$CERT_DIR/Lamassu_CA.pem
CA_KEY_PATH=$KEY_DIR/Lamassu_OP_Root_CA.key
CA_PATH=$CERT_DIR/Lamassu_OP_Root_CA.pem
SERVER_KEY_PATH=$KEY_DIR/Lamassu_OP.key
SERVER_CERT_PATH=$CERT_DIR/Lamassu_OP.pem
MNEMONIC_DIR=$CONFIG_DIR/mnemonics
MNEMONIC_FILE=$MNEMONIC_DIR/mnemonic.txt
BACKUP_DIR=/var/backups/postgresql
BLOCKCHAIN_DIR=/mnt/blockchains
OFAC_DATA_DIR=/var/lamassu/ofac
ID_PHOTO_CARD_DIR=/opt/lamassu-server/idphotocard
FRONTCAMERA_DIR=/opt/lamassu-server/frontcamera
mkdir -p $NEW_VOLUME_MOUNTING_POINT$CERT_DIR
mkdir -p $NEW_VOLUME_MOUNTING_POINT$KEY_DIR
mkdir -p $NEW_VOLUME_MOUNTING_POINT$MNEMONIC_DIR
mkdir -p $NEW_VOLUME_MOUNTING_POINT/var/backups
mkdir -p $NEW_VOLUME_MOUNTING_POINT/mnt
mkdir -p $NEW_VOLUME_MOUNTING_POINT/var/lamassu
mkdir -p $NEW_VOLUME_MOUNTING_POINT/opt/lamassu-server
if [ -f $LAMASSU_CA_PATH ];
then
cp $LAMASSU_CA_PATH $NEW_VOLUME_MOUNTING_POINT$CERT_DIR
echo "Successfully migrated $LAMASSU_CA_PATH"
else
echo "Failed to migrate $LAMASSU_CA_PATH, file doesn't exist!"
fi
if [ -f $CA_KEY_PATH ];
then
cp $CA_KEY_PATH $NEW_VOLUME_MOUNTING_POINT$KEY_DIR
echo "Successfully migrated $CA_KEY_PATH"
else
echo "Failed to migrate $CA_KEY_PATH, file doesn't exist!"
fi
if [ -f $CA_PATH ];
then
cp $CA_PATH $NEW_VOLUME_MOUNTING_POINT$CERT_DIR
echo "Successfully migrated $CA_PATH"
else
echo "Failed to migrate $CA_PATH, file doesn't exist!"
fi
if [ -f $SERVER_KEY_PATH ];
then
cp $SERVER_KEY_PATH $NEW_VOLUME_MOUNTING_POINT$KEY_DIR
echo "Successfully migrated $SERVER_KEY_PATH"
else
echo "Failed to migrate $SERVER_KEY_PATH, file doesn't exist!"
fi
if [ -f $SERVER_CERT_PATH ];
then
cp $SERVER_CERT_PATH $NEW_VOLUME_MOUNTING_POINT$CERT_DIR
echo "Successfully migrated $SERVER_CERT_PATH"
else
echo "Failed to migrate $SERVER_CERT_PATH, file doesn't exist!"
fi
if [ -f $MNEMONIC_FILE ];
then
cp $MNEMONIC_FILE $NEW_VOLUME_MOUNTING_POINT$MNEMONIC_DIR
echo "Successfully migrated $MNEMONIC_FILE"
else
echo "Failed to migrate $MNEMONIC_FILE, file doesn't exist!"
fi
if [ -d $BACKUP_DIR ];
then
cp -r $BACKUP_DIR $NEW_VOLUME_MOUNTING_POINT/var/backups
echo "Successfully migrated $BACKUP_DIR"
else
echo "Failed to migrate $BACKUP_DIR, directory doesn't exist!"
fi
if [ -d $BLOCKCHAIN_DIR ];
then
cp -r $BLOCKCHAIN_DIR $NEW_VOLUME_MOUNTING_POINT/mnt
echo "Successfully migrated $BLOCKCHAIN_DIR"
else
echo "Failed to migrate $BLOCKCHAIN_DIR, directory doesn't exist!"
fi
if [ -d $OFAC_DATA_DIR ];
then
cp -r $OFAC_DATA_DIR $NEW_VOLUME_MOUNTING_POINT/var/lamassu
echo "Successfully migrated $OFAC_DATA_DIR"
else
echo "Failed to migrate $OFAC_DATA_DIR, directory doesn't exist!"
fi
if [ -d $ID_PHOTO_CARD_DIR ];
then
cp -r $ID_PHOTO_CARD_DIR $NEW_VOLUME_MOUNTING_POINT/opt/lamassu-server
echo "Successfully migrated $ID_PHOTO_CARD_DIR"
else
echo "Failed to migrate $ID_PHOTO_CARD_DIR, directory doesn't exist!"
fi
if [ -d $FRONTCAMERA_DIR ];
then
cp -r $FRONTCAMERA_DIR $NEW_VOLUME_MOUNTING_POINT/opt/lamassu-server
echo "Successfully migrated $FRONTCAMERA_DIR"
else
echo "Failed to migrate $FRONTCAMERA_DIR, directory doesn't exist!"
fi
echo "Migration completed!"