-
Notifications
You must be signed in to change notification settings - Fork 0
/
aws_domainNames_delete.sh
executable file
·88 lines (70 loc) · 4.06 KB
/
aws_domainNames_delete.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/usr/bin/env bash
# deletes domain names
###################
source colour_utils_functions.sh # to add colour to some messages
case $# in
1) ;; ### continue below
0|*) ### display message on use
message "\n`colour gl $(basename $0)` deletes the domain names of the instances specified as below.
$(colour bl "Usage: $(basename $0) instancesNamesFile")
- provide the full or relative path to the file containing the names of the instances whose
domain names will be deleted.
- example: $(colour bl "$(basename $0) courses/genomics01/")$(colour r inputs)$(colour bl /instancesNames.txt)
- the $(colour bl inputs) directory must be specified as such and inside one or more directories of your choice.
- an $(colour bl outputs) directory will be created at the same level of the inputs directory where the results
of the aws commands will be stored.\n"
exit 2;;
esac
# instancesNamesFile=${1##*/} #; delete everything (*) up to last / and return the rest = (`basename $1`) but more efficient
instancesNamesFile=${1} #; actually need the full path ; message "instancesNameFile: $instancesNamesFile"
# general inputs directory # return what is left after eliminating the last / and any character following it
inputsDir=${1%/*} # message "inputsdir: $inputsDir"
# general outputs directory # note that some data in the outpus directory (from creating instances) is needed as input
outputsDir=${1%/inputs*}/outputs # return what is left after eliminating the second to last / and "inputs" and any character
# following "inputs", then adds "/outputs"
# message "outputsdir: $outputsDir"
message "$(colour cyan "Deleting domain names:")"
check_theScripts_csconfiguration "$instancesNamesFile" || exit 1
check_created_resources_results_files "DO-EXIST" "DOMAIN_NAME_FILES" "$instancesNamesFile" || { message "$(colour lb "$(basename $0) aborting")"; exit 1; }
outputsDirThisRun=${outputsDir}/domain-names-delete-output`date '+%Y%m%d.%H%M%S'`
if [ ! -d $outputsDirThisRun ]; then
message "$(colour brown "Creating directory to hold the results of deleting domain names:")"
message $outputsDirThisRun
mkdir -p $outputsDirThisRun
fi
instancesNames=( `cat $instancesNamesFile` )
for instanceFullName in ${instancesNames[@]}
do
instance=${instanceFullName%-src*} ### get rid of suffix "-srcAMInn.." if it exists
resultsFile="$outputsDirThisRun/domain-name-delete-$instance.txt"
eip=`awk -F " " '$1 == "Success" {ipaddress=$6} END {print ipaddress}' $outputsDir/domain-names-creation-output/domain-name-create-$instance.txt`
instanceDomainName=`awk -F " " '$1 == "Success" {domainName=$4} END {print domainName}' $outputsDir/domain-names-creation-output/domain-name-create-$instance.txt`
# create the file batch request required by aws cli command to update the domain records
fileRequest="
{\n
\t \"Comment\": \"Deleting subdomain\",\n
\t \"Changes\": [\n
\t \t {\n
\t \t \t \"Action\": \"DELETE\",\n
\t \t \t \"ResourceRecordSet\": {\n
\t \t \t \t \"Name\": \"$instanceDomainName\",\n
\t \t \t \t \"Type\": \"A\",\n
\t \t \t \t \"TTL\": 3600,\n
\t \t \t \t \"ResourceRecords\": [{ \"Value\": \"$eip\"}]\n
\t \t \t }\n
\t \t }\n
\t ]\n
}\n
"
echo -e $fileRequest > ${resultsFile%.txt}Request.json
#message "fileRequest: $fileRequest"
hostZoneId=`awk -F " " '$1 == "hostZoneId" {print $2}' $inputsDir/resourcesIDs.txt`
aws route53 change-resource-record-sets --hosted-zone-id $hostZoneId --change-batch file://${resultsFile%.txt}Request.json > $resultsFile 2>&1
awsResult=$?
if [ $awsResult -eq 0 ]; then
message "`colour gl Success` deleting `colour bl "domain:"` $instanceDomainName `colour bl ip:` $eip" $resultsFile
else
message "`colour red Error` ($awsResult) deleting `colour bl "domain:"` $instanceDomainName `colour bl ip:` $eip" $resultsFile
message "$(colour gl NB): if error is 254 the domain name to delete was not found (was likely deleted before) and eveything is OK. Otherwise check the results file \"$resultsFile\"." $resultsFile
fi
done