-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathxxx_tfver2_pipeline_create.sh
executable file
·107 lines (82 loc) · 2.94 KB
/
xxx_tfver2_pipeline_create.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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/bin/bash
######################################################
# Error Check Script
set -e
function trap_debugger () {
# Function to output script error & slack alert via alt script
local parent_lineno="$1"
local message="$2"
local code="${3:-1}"
if [[ -n "$message" ]] ; then
echo "Error on or near line ${parent_lineno}: ${message}; command yielded exit code ${code}"
else
echo "Error on or near line ${parent_lineno}; command yielded exit code ${code}"
fi
exit "${code}"
}
# keep track of the last executed command
trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG
trap 'trap_debugger ${LINENO}' ERR
######################################################
if [ "$#" -ne 2 ]; then
echo "USAGE: ./xxx_tfver2_pipeline_create.sh \${YOUR_TERRAFORM_EXEC} \${YOUR_UNIQUE_RANDOM_STRING}"
echo "e.g > ./xxx_tfver2_pipeline_create.sh terraform_v1.0.6 z0b3ly"
exit 0
fi
terraform_exec=$1
random_string=$2
echo "creating dev & prod backends now..."
### Run terraform
## 0. setup remote backend
for myenv in "dev" "prod" ; do
cd terraform_v2/00_setup_remote_s3_backend_${myenv}
rm -rf .terraform .terraform.lock.hcl
$terraform_exec init -input=false
$terraform_exec validate
$terraform_exec apply \
-input=false \
-var random_string=$random_string \
-auto-approve
rm -fv ${myenv}.backend.hcl
for be_key in "region" "bucket" "dynamodb_table"; do
grep $be_key backend_${myenv}.tf | sed 's/^[ \t]*//;s/[ \t]*$//' >> ${myenv}.backend.hcl
done
cp -v ${myenv}.backend.hcl ../envs/${myenv}/
### copy backend tfstate to it's own remote state
IS_REMOTE_STATE_UP=$($terraform_exec state list | wc -l)
if [ "$IS_REMOTE_STATE_UP" -gt "0" ]; then
echo "remote state has already been pushed. skipping..."
else
echo "pushing remote state for the first time"
$terraform_exec init -force-copy -input=false
fi
cd -
done
for myenv in "dev" "prod"; do
## 1
cd terraform_v2/entrypoints/sls_deployment_bucket
rm -rf .terraform .terraform.lock.hcl
$terraform_exec init \
-input=false \
-backend-config=../../envs/${myenv}/${myenv}.backend.hcl
$terraform_exec validate
$terraform_exec apply \
-var-file=../../envs/${myenv}/${myenv}.tfvars \
-var random_string=$random_string \
-auto-approve \
-input=false
cd -
## 2
cd terraform_v2/entrypoints/exifripper_buckets_and_iam_role
rm -rf .terraform .terraform.lock.hcl
$terraform_exec init \
-input=false \
-backend-config=../../envs/${myenv}/${myenv}.backend.hcl
$terraform_exec validate
$terraform_exec apply \
-var-file=../../envs/${myenv}/${myenv}.tfvars \
-var random_string=$random_string \
-auto-approve \
-input=false
cd -
done