Skip to content

Commit a356119

Browse files
authored
Merge pull request #5 from mojaloop/move-tf-state
Move tf state and destroy control center
2 parents cdddbcb + ed89b33 commit a356119

File tree

2 files changed

+164
-0
lines changed

2 files changed

+164
-0
lines changed

destroy-control-center.sh

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
if [ -n "$1" ]
2+
then
3+
export IAC_TERRAFORM_MODULES_TAG=$1
4+
else
5+
echo "Please pass IAC_TERRAFORM_MODULES_TAG as the first parameter"
6+
echo "Usage destroy-control-center.sh IAC_TERRAFORM_MODULES_TAG AWS_PROFILE [WORKDIR]"
7+
exit 1
8+
fi
9+
if [ -n "$2" ]
10+
then
11+
export AWS_PROFILE=$2
12+
else
13+
echo "Please pass AWS_PROFILE as the second parameter"
14+
echo "Usage destroy-control-center-cleanup.sh IAC_TERRAFORM_MODULES_TAG AWS_PROFILE [WORKDIR]"
15+
exit 1
16+
fi
17+
18+
if [ -n "$3" ]
19+
then
20+
export WORK_DIR=$3
21+
else
22+
WORK_DIR=/tmp/data/bootstrap
23+
fi
24+
25+
export IAC_TEMPLATES_TAG=$IAC_TERRAFORM_MODULES_TAG
26+
export CONTROL_CENTER_CLOUD_PROVIDER=aws
27+
cd $WORK_DIR"/control-center-deploy"
28+
terragrunt run-all destroy --terragrunt-non-interactive

move-state-from-gitlab.sh

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
function set_tf_variables {
2+
export TF_HTTP_USERNAME=root
3+
export TF_STATE_BASE_ADDRESS=$GITLAB_URL"/api/v4/projects/"$BOOTSTRAP_PROJECT_ID"/terraform/state"
4+
export TF_HTTP_LOCK_METHOD=POST
5+
export TF_HTTP_UNLOCK_METHOD=DELETE
6+
export TF_HTTP_RETRY_WAIT_MIN=5
7+
export TF_HTTP_PASSWORD=${GITLAB_ROOT_TOKEN}
8+
9+
export CONTROL_CENTER_CLOUD_PROVIDER="aws"
10+
export ANSIBLE_BASE_OUTPUT_DIR="./"
11+
export PRIVATE_REPO_USER=nullvalue
12+
export PRIVATE_REPO_TOKEN=nullvalue
13+
export PRIVATE_REPO=example.com
14+
export IAC_TEMPLATES_TAG=$IAC_TERRAFORM_MODULES_TAG
15+
16+
set
17+
18+
}
19+
20+
function overwrite_terragrunt_file {
21+
22+
cat <<'EOT' >terragrunt.hcl
23+
skip = true
24+
remote_state {
25+
backend = "local"
26+
config = {
27+
path = "${get_parent_terragrunt_dir()}/${path_relative_to_include()}/terraform.tfstate"
28+
}
29+
30+
generate = {
31+
path = "backend.tf"
32+
if_exists = "overwrite"
33+
}
34+
}
35+
36+
generate "required_providers" {
37+
path = "required_providers.tf"
38+
39+
if_exists = "overwrite_terragrunt"
40+
41+
contents = <<EOF
42+
terraform {
43+
required_version = "${local.common_vars.tf_version}"
44+
45+
required_providers {
46+
local = {
47+
source = "hashicorp/local"
48+
version = "${local.common_vars.local_provider_version}"
49+
}
50+
}
51+
}
52+
EOF
53+
}
54+
55+
locals {
56+
common_vars = yamldecode(file("common-vars.yaml"))
57+
env_vars = yamldecode(file("environment.yaml"))
58+
}
59+
EOT
60+
61+
}
62+
63+
if [ -n "$1" ]
64+
then
65+
export INVENTORY_FILE_PATH=$1
66+
else
67+
echo "Please pass INVENTORY_FILE_PATH as the first parameter"
68+
echo "Usage move-state-from-gitlab.sh INVENTORY_FILE_PATH AWS_PROFILE IAC_TERRAFORM_MODULES_TAG [WORK_DIR] [BOOTSTRAP_PROJECT_ID]"
69+
exit 1
70+
fi
71+
72+
73+
if [ -n "$2" ]
74+
then
75+
export AWS_PROFILE=$2
76+
else
77+
echo "Please pass AWS_PROFILE as the second parameter"
78+
echo "Usage move-state-from-gitlab.sh INVENTORY_FILE_PATH AWS_PROFILE IAC_TERRAFORM_MODULES_TAG [WORK_DIR] [BOOTSTRAP_PROJECT_ID]"
79+
exit 1
80+
fi
81+
82+
if [ -n "$3" ]
83+
then
84+
export IAC_TERRAFORM_MODULES_TAG=$3
85+
else
86+
echo "Please pass AWS_PROFILE as the second parameter"
87+
echo "Usage move-state-from-gitlab.sh INVENTORY_FILE_PATH AWS_PROFILE IAC_TERRAFORM_MODULES_TAG [WORK_DIR] [BOOTSTRAP_PROJECT_ID]"
88+
exit 1
89+
fi
90+
91+
if [ -n "$4" ]
92+
then
93+
export WORK_DIR=$4
94+
else
95+
WORK_DIR=/tmp/data/bootstrap
96+
fi
97+
98+
if [ -n "$5" ]
99+
then
100+
export BOOTSTRAP_PROJECT_ID=$5
101+
else
102+
BOOTSTRAP_PROJECT_ID=1
103+
fi
104+
105+
106+
if [ -f $INVENTORY_FILE_PATH ]
107+
then
108+
GITLAB_HOST=$(yq eval ".gitlab.vars.server_hostname" $INVENTORY_FILE_PATH)
109+
ROOT_TOKEN=$(yq eval ".gitlab.vars.server_token" $INVENTORY_FILE_PATH)
110+
echo $GITLAB_HOST" is GITLAB HOST"
111+
if [ "${GITLAB_HOST}" == "null" ] || [ "${ROOT_TOKEN}" == "null" ]
112+
then
113+
echo "Could not get the GITLAB credentials value, may be wrong inventory file provided"
114+
exit 1
115+
fi
116+
GITLAB_URL="https://"$GITLAB_HOST
117+
GITLAB_ROOT_TOKEN=$ROOT_TOKEN
118+
GITLAB_CLONE_URL="https://oauth2:"$GITLAB_ROOT_TOKEN"@"$GITLAB_HOST"/iac/bootstrap.git"
119+
else
120+
echo "$INVENTORY_FILE_PATH does not exist"
121+
exit 1
122+
fi
123+
124+
rm -rf $WORK_DIR
125+
mkdir -p $WORK_DIR
126+
127+
BOOTSTRAP_PROJECT=$GITLAB_URL"/iac/bootstrap.git"
128+
git clone $GITLAB_CLONE_URL $WORK_DIR
129+
130+
set_tf_variables
131+
cd $WORK_DIR
132+
# init upgrade
133+
terragrunt run-all init -upgrade
134+
overwrite_terragrunt_file
135+
#migrate state
136+
terragrunt run-all init -migrate-state -force-copy

0 commit comments

Comments
 (0)