· 6 years ago · Nov 07, 2019, 09:50 AM
1.PHONY: dev-init lci gci staging prod
2############################
3# VARIABLES #
4############################
5ENV = env
6RED=$(shell tput setaf 1)
7YELLOW=$(shell tput setaf 3)
8############################
9# ENVIRONMENTS #
10############################
11dev:
12$(eval ENV = dev)
13lci:
14$(eval ENV = lci)
15gci:
16$(eval ENV = gci)
17staging:
18$(eval ENV = staging)
19prod:
20$(eval ENV = prod)
21
22$(eval access_key :=$(shell cat ../${ENV}/private.tfvars | grep access_key | awk '{print $$3}' | sed 's/\"//g'))
23$(eval secret_key :=$(shell cat ../${ENV}/private.tfvars | grep secret_key | awk '{print $$3}' | sed 's/\"//g'))
24
25############################
26# TARGETS #
27############################
28 @echo "$(BOLD)$(YELLOW)Deploying ${ENV} Terraform"
29 @if [ -f ../${ENV}/private.tfvars ] ; then \
30 echo "$(BOLD)$(GREEN) Found private.tfvars";\
31 else \
32 echo "$(BOLD)$(YELLOW) Not found private.tfvars";\
33 exit 1 ;\
34 fi
35
36
37init:
38 @terraform init -reconfigure \
39 -var-file=../${ENV}/private.tfvars \
40 -var-file=../${ENV}/variables.tfvars \
41 -backend-config=bucket=essilor-terraform-tfstate \
42 -backend-config=key=${ENV}dev/terraform.tfstate \
43 -backend-config=region=eu-west-1 \
44 -backend-config=access_key=${access_key} \
45 -backend-config=secret_key=${secret_key} \
46 -backend=true ../terraform/
47
48plan:
49 @terraform plan -auto-approve \
50 -var-file=../dev/private.tfvars \
51 -var-file=../dev/variables.tfvars \
52 ../terraform/
53
54#######################
55# TERRAFORM ACTIONS #
56#######################
57dev-init: dev init
58dev-plan: dev plan
59lci-init: lci init
60lci-plan: lci plan
61gci-init: lci init
62gci-plan: gci plan
63staging-init: staging init
64staging-plan: staging plan
65prod-init: prod init
66prod-plan: prod plan