11#! /bin/bash
22version=" 0.1.10"
33echo " Fixing configs...(fixconfig.sh v$version )"
4- # Ensure right number of params
5- if [ $# -lt 5 ]; then
6- echo ' At least 5 parameters are required!'
7- echo ' Param 1: AWS Cognito User Pool id'
8- echo ' Param 2: AWS Cognito client id'
9- echo ' Param 3: RG Bucket Name (The bucket where CFT templates are stored)'
10- echo ' Param 4: App username'
11- echo ' Param 5: App user password'
12- echo ' Param 6: Run Id'
13- echo ' Param 7: (Optional) URL to reach RG '
14- echo ' e.g https://rg.example.com'
15- echo ' Note that the protocol will be picked from this param!'
16- echo ' Will use public-host-name if not passed'
17- exit 1
18- fi
194
20- myuserpoolid=$1
21- myclientid=$2
22- mys3bucket=$3
23- myappuser=$4
24- myapppwd=$5
25- myrunid=$6
26- myurl=$7
275[ -z " $RG_HOME " ] && RG_HOME=' /opt/deploy/sp2'
286echo " RG_HOME=$RG_HOME "
297[ -z " $RG_SRC " ] && RG_SRC=' /home/ubuntu'
@@ -33,33 +11,14 @@ echo "RG_ENV=$RG_ENV"
3311[ -z " $S3_SOURCE " ] && S3_SOURCE=rg-deployment-docs
3412echo " S3_SOURCE=$S3_SOURCE "
3513
36- mypubip=$( wget -q -O - http://169.254.169.254/latest/meta-data/public-ipv4)
37- echo " Public IP : $mypubip "
3814myip=$( wget -q -O - http://169.254.169.254/latest/meta-data/local-ipv4)
3915echo " Local IP : $myip "
40- region=" $( wget -q -O - http://169.254.169.254/latest/meta-data/placement/region) "
41- echo " Region : $region "
4216role_name=" $( wget -q -O - http://169.254.169.254/latest/meta-data/iam/security-credentials/) "
4317echo " Role name : $role_name "
4418ac_name=$( wget -q -O - http://169.254.169.254/latest/dynamic/instance-identity/document | jq -r .accountId)
4519echo " Account number : $ac_name "
4620instanceid=$( wget -q -O - http://169.254.169.254/latest/meta-data/instance-id)
4721echo " Instance-id : $instanceid "
48- if [ -z " $myurl " ]; then
49- public_host_name=" $( wget -q -O - http://169.254.169.254/latest/meta-data/public-hostname) "
50- if [ -z " $public_host_name " ]; then
51- echo " FATAL: No RG URL passed. Instance does not have public hostname. One of the two is required. Not modifying configs."
52- exit 1
53- else
54- baseurl=" http://$public_host_name /"
55- snsprotocol=" http"
56- fi
57- else
58- baseurl=" $myurl /"
59- snsprotocol=$( echo " $myurl " | sed -e ' s/\(http.*:\/\/\).*/\1/' | sed -e ' s/://' -e ' s/\///g' )
60- fi
61- echo " Base URL set to $baseurl "
62- echo " snsprotocol set to $snsprotocol "
6322
6423if ! [ -d " $RG_HOME /tmp" ]; then
6524 echo " $RG_HOME /tmp does not exist. Creating"
@@ -70,77 +29,25 @@ if ! [ -d "$RG_HOME/config" ]; then
7029 echo " $RG_HOME /config does not exist. Creating"
7130 mkdir -p " $RG_HOME /config"
7231fi
73- mkdir -p " $RG_HOME /config"
32+ tar -xvf " $RG_SRC /config.tar.gz " -C " $RG_HOME "
7433if [ -z " $( ls -A $RG_HOME /config) " ]; then
75- echo " $RG_HOME /config is empty. Extracting templates"
76- tar -xvf " $RG_SRC /config.tar.gz" -C " $RG_HOME "
77- if [ -z " $( ls -A $RG_HOME /config) " ]; then
78- echo " FATAL: $RG_HOME /config is still empty. Exiting"
79- exit 1
80- fi
34+ echo " FATAL: $RG_HOME /config is still empty. Exiting"
35+ exit 1
8136fi
8237mytemp=$( mktemp -d -p " ${RG_HOME} /tmp" -t " config.old.XXX" )
8338echo " $mytemp "
8439cp " ${RG_HOME} /config/config.json" " $mytemp "
85- cp " ${RG_HOME} /config/snsConfig.json" " $mytemp "
86- cp " ${RG_HOME} /config/mongo-config.json" " $mytemp "
87- cp " ${RG_HOME} /config/global-config.json" " $mytemp "
88- cp " ${RG_HOME} /config/email-config.json" " $mytemp "
8940cp " ${RG_HOME} /config/notification-config.json" " $mytemp "
9041cp " ${RG_HOME} /config/trustPolicy.json" " $mytemp "
9142
92-
93- s3url=" https://${mys3bucket} .s3.${region} .amazonaws.com/"
9443echo " Modifying config.json"
95- if [ -z " $baseurl " ]; then
96- echo " WARNING: Base URL is not passed. config.json file may not be configured correctly"
97- fi
98- jq -r " .baseURL=\" $baseurl \" " " $mytemp /config.json" |
99- jq -r " .googleOAuthCredentials.callbackURL=\" $baseurl \" " |
100- jq -r " .baseAccountInstanceRoleName=\" $role_name \" " |
101- jq -r ' .baseAccountPolicyName="RG-Portal-CrossAccount-Policy"' |
102- jq -r " .baseAccountNumber=\" $ac_name \" " |
103- jq -r " .researchGatewayAPIToken=\" $instanceid \" " |
104- jq -r " .BucketName=\" $mys3bucket \" " |
105- jq -r " .cftTemplateURL=\" $s3url \" " |
106- jq -r " .AWSCognito.userPoolId=\" $myuserpoolid \" " |
107- jq -r " .AWSCognito.clientId=\" $myclientid \" " |
108- jq -r " .AWSCognito.region=\" $region \" " |
109- jq -r " .enableB2CMode=false" > " ${RG_HOME} /config/config.json"
110- echo " Modifying snsConfig.json"
111- if [ -z " $snsprotocol " ]; then
112- echo " WARNING: SNS protocol could not be determined. Did you pass in the correct RG URL?"
113- echo " snsConfig.json file may not be configured correctly"
114- fi
115- jq -r " .snsProtocol=\" $snsprotocol \" " " $mytemp /snsConfig.json" > " ${RG_HOME} /config/snsConfig.json"
116- echo " Modifying mongo-config.json"
117- jq -r " .db_ssl_enable=true" " $mytemp /mongo-config.json" |
118- jq -r ' .db_ssl_config.CAFile="RL-CA.pem"' |
119- jq -r ' .db_ssl_config.PEMFile="mongodb.pem"' |
120- jq -r " .db_auth_enable=true" |
121- jq -r " .db_documentdb_enable=false" |
122- jq -r " .db_auth_config.username=\" $myappuser \" " |
123- jq -r " .db_auth_config.password=\" $myapppwd \" " |
124- jq -r ' .db_auth_config.authenticateDb="admin"' > " ${RG_HOME} /config/mongo-config.json"
125- echo " Modifying global-config.json"
126- if [ -z " $baseurl " ]; then
127- echo " WARNING: Base URL is not passed. global-config.json file may not be configured correctly"
128- fi
129- jq -r " .secureURL.PROD=\" $baseurl \" " " $mytemp /global-config.json" |
130- jq -r " .linksForRg.termsAndConditions=\" $baseurl \" " > " ${RG_HOME} /config/global-config.json"
131- echo " Modifying email-config.json"
132- if [ -z " $baseurl " ]; then
133- echo " WARNING: Base URL is not passed. The following file may not be configured correctly"
134- fi
135- jq -r " .email.url=\" $baseurl :2687/bot/sns_notify_bot/exec\" " " $mytemp /email-config.json" |
136- jq -r ' .email.options.body.data.from="rlc.support@relevancelab.com"' |
137- jq -r ' .email.options.body.data.url="https://serviceone.rlcatalyst.com"' > " ${RG_HOME} /config/email-config.json"
44+ jq -r " .baseAccountInstanceRoleName=\" $role_name \" " " $mytemp /config.json" > " ${RG_HOME} /config/config.json"
45+
13846echo " Modifying notification-config.json"
13947jq -r " .tokenID=[\" $instanceid \" ]" " $mytemp /notification-config.json" > " ${RG_HOME} /config/notification-config.json"
48+
14049echo " Modifying trustPolicy.json"
141- jq -r " .trustPolicy.Statement[0].Principal.AWS=\" arn:aws:iam::$ac_name :role/$role_name \" " " $mytemp /trustPolicy.json" |
142- jq -r " .roleName=\" RG-Portal-ProjectRole-$RG_ENV -$myrunid \" " |
143- jq -r " .policyName=\" RG-Portal-ProjectPolicy-$RG_ENV -$myrunid \" " > " ${RG_HOME} /config/trustPolicy.json"
50+ jq -r " .trustPolicy.Statement[0].Principal.AWS=\" arn:aws:iam::$ac_name :role/$role_name \" " " $mytemp /trustPolicy.json" > " ${RG_HOME} /config/trustPolicy.json"
14451
14552echo " Fetching latest docker-compose.yml"
14653aws s3 cp s3://${S3_SOURCE} /docker-compose.yml $RG_SRC
0 commit comments