Skip to content

Instantly share code, notes, and snippets.

@asheliahut
Created August 11, 2015 18:20
Show Gist options
  • Save asheliahut/0105b0c42e87df88dcd1 to your computer and use it in GitHub Desktop.
Save asheliahut/0105b0c42e87df88dcd1 to your computer and use it in GitHub Desktop.
#!/bin/bash
usage()
{
echo "Description: this script is used for scaling databases of r3 size only. can be altered make sure to have the rds cli installed";
echo "-e (Required Field) Specify the environment you want to scale Ex: perf | performance, stag | staging, sand | sandbox, or prod | production ";
echo "-i Shows information for the environment";
echo "-s Scale to specified instance default = large. Ex: l | large, xl | xlarge, 2xl | 2xlarge, 4xl | 4xlarge, or 8xl | 8xlarge";
echo "";
echo "E.g. usage:";
echo "";
echo "rds-scale.sh -e production -s xl";
echo "This would scale the master production server up to db.r3.xlarge";
echo "";
echo "rds-scale.sh -e performance -s l";
echo "This would scale the master performance server to db.r3.large";
echo "";
echo "rds-scale.sh -e production -i";
echo "This would show the status information for the server.";
echo "";
exit
}
if [[ $# -eq 0 ]] ; then
echo "Please pass at least one argument.";
usage
fi
env=''
server_identifier=''
info=0
scalesize=''
#server list
prod_server='prod_db_name'
perf_server='perf_db_name'
stag_server='stag_db_name'
sand_server='sand_db_name'
while [ "$1" != "" ]; do
case $1 in
-e | --environment ) shift
env=$1
;;
-i | --information ) info=1
;;
-s | --scale ) shift
scale=$1
;;
-h | --help ) usage
exit
;;
* ) usage
exit 1
esac
shift
done
case "$env" in
'prod' | 'production' ) server_identifier="$prod_server" ;;
'perf' | 'performance') server_identifier="$perf_server" ;;
'stag' | 'staging' ) server_identifier="$stag_server" ;;
'sand' | 'sandbox' ) server_identifier="$sand_server" ;;
* ) echo "not a valid environment please choose one"; exit ;;
esac
if [[ $info == 1 ]] ; then
rds-describe-db-instances "$server_identifier"
echo ""
fi
case "$scale" in
'l' | 'large' ) scalesize='db.r3.large' ;;
'xl' | 'xlarge' ) scalesize='db.r3.xlarge' ;;
'2xl'| '2xlarge' ) scalesize='db.r3.2xlarge' ;;
'4xl'| '4xlarge' ) scalesize='db.r3.4xlarge' ;;
'8xl'| '8xlarge' ) scalesize='db.r3.8xlarge' ;;
* ) echo "no size selected please choose one"; exit ;;
esac
rds-modify-db-instance --apply-immediately --db-instance-class "$scalesize" --db-instance-identifier "$server_identifier";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment