ec2-automate-backup supports -c cron-primer mode for loading environment configuration.

This commit is contained in:
Colin Johnson 2012-11-12 03:12:59 +00:00
parent 18a97a7714
commit b122dcfff8
3 changed files with 26 additions and 4 deletions

View File

@ -22,6 +22,7 @@ ec2-automate-backup requires one of the following two parameters be provided:
#
-r <region> - the region that contains the EBS volumes for which you wish to have a snapshot created.
-s <selection_method> - the selection method by which EBS volumes will be selected. Currently supported selection methods are "volumeid" and "tag." The selection method "volumeid" identifies EBS volumes for which a snapshot should be taken by volume id whereas the selection method "tag" identifies EBS volumes for which a snapshot should be taken by a key=value format tag.
-c <cron_primer_file> - running with the -c option and a providing a file will cause ec2-automate-backup to source a file for environmental configuration - ideal for running ec2-automate-backup under cron. An example cron primer file is located in the "Resources" directory and is called cron-primer.sh.
-n - tag snapshots "Name" tag as well as description
-k <purge_after_days> - the period after which a snapshot can be purged. For example, running "ec2-automate-backup.sh -v "vol-6d6a0527 vol-636a0112" -k 31" would allow snapshots to be removed after 31 days. purge_after_days creates two tags for each volume that was backed up - a PurgeAllow tag which is set to PurgeAllow=true and a PurgeAfter tag which is set to the present day (in UTC) + the value provided by -k.
-p - the -p flag will purge (meaning delete) all snapshots that were created more than "purge after days" ago. ec2-automate-backup looks at two tags to determine which snapshots should be deleted - the PurgeAllow and PurgeAfter tags. The tags must be set as follows: PurgeAllow=true and PurgeAfter=YYYY-MM-DD where YYYY-MM-DD must be before the present date.

View File

@ -0,0 +1,11 @@
#!/bin/bash
#EC2_HOME required for EC2 API Tools
export EC2_HOME=/opt/aws/apitools/ec2
#JAVA_HOME required for EC2 API Tools
export JAVA_HOME=/usr/lib/jvm/jre
#export PATH=/bin is required for cut, date, grep
#export PATH=/opt/aws/bin/ is required for EC2 API Tools
#typical system path PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/bin
export PATH=/bin:/opt/aws/bin/
export AWS_ACCESS_KEY=<your_access_key>
export AWS_SECRET_KEY=<your_secret_key>

View File

@ -139,9 +139,6 @@ purge_EBS_Snapshots()
done
}
#calls prerequisitecheck function to ensure that all executables required for script execution are available
prerequisite_check
app_name=`basename $0`
#sets defaults
@ -155,10 +152,11 @@ name_tag_create=false
#sets the Purge Snapshot feature to false - this feature will eventually allow the removal of snapshots that have a "PurgeAfter" tag that is earlier than current date
purge_snapshots=false
#handles options processing
while getopts :s:r:v:t:k:pn opt
while getopts :s:c:r:v:t:k:pn opt
do
case $opt in
s) selection_method="$OPTARG";;
c) cron_primer="$OPTARG";;
r) region="$OPTARG";;
v) volumeid="$OPTARG";;
t) tag="$OPTARG";;
@ -169,6 +167,18 @@ while getopts :s:r:v:t:k:pn opt
esac
done
#sources "cron_primer" file for running under cron or other restricted environments - this file should contain the variables and environment configuration required for ec2-automate-backup to run correctly
if [[ -n $cron_primer ]]
then if [[ -f $cron_primer ]]
then source $cron_primer
else
echo "Cron Primer File \"$cron_primer\" Could Not Be Found." 1>&2 ; exit 70
fi
fi
#calls prerequisitecheck function to ensure that all executables required for script execution are available
prerequisite_check
#sets date variable
date_current=`date -u +%Y-%m-%d`
#sets the PurgeAfter tag to the number of days that a snapshot should be retained