-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.terraform.mk
107 lines (86 loc) · 2.6 KB
/
.terraform.mk
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
CONFIG ?= .
BACKEND_CONFIG := $(wildcard $(CONFIG)/backend.tfvars)
BACKEND_ARGS := $(foreach config,$(BACKEND_CONFIG),-backend-config=$(config))
STATE := $(CONFIG)/terraform.tfstate
TFVARS := $(wildcard $(CONFIG)/tfvars.json)
TFVARS_ARGS := $(foreach varfile,$(TFVARS),-var-file=$(varfile))
export TF_DATA_DIR := $(CONFIG)/.terraform
export TF_CLI_ARGS_init := $(BACKEND_ARGS)
export TF_CLI_ARGS_import := $(TFVARS_ARGS) -input=false -state=$(STATE)
export TF_CLI_ARGS_plan := $(TFVARS_ARGS) -input=false -state=$(STATE)
export TF_CLI_ARGS_apply := $(TF_CLI_ARGS_plan)
export TF_CLI_ARGS_destroy := $(TF_CLI_ARGS_plan)
.PHONY: default
default: $(CONFIG)/.applied
.PHONY: fmt
fmt:
terraform fmt
.PHONY: plan
plan: clean_plan $(CONFIG)/.plan
.PHONY: validate
validate:
export TF_CLI_ARGS_init=-backend=false
terraform validate
.PHONY: destroy
destroy:
terraform destroy
$(MAKE) clean
.PHONY: reconfigure
reconfigure:
terraform init -reconfigure
touch $(CONFIG)/.initialized
.PHONY: migratestate
migratestate:
terraform init -migrate-state
touch $(CONFIG)/.initialized
.PHONY: clean
clean:
rm -rf $(CONFIG)/.terraform $(CONFIG)/.initialized $(CONFIG)/.applied
.PHONY: apply
apply: clean_apply $(CONFIG)/.applied
.PHONY: apply-saved
apply-saved: $(CONFIG)/.initialized
@if [ ! -f "$(CONFIG)/.plan" ]; then \
echo "No plan has been saved." 1>&2; \
fi
TF_CLI_ARGS_apply= terraform apply -state=$(STATE) "$(CONFIG)/.plan"
rm -f $(CONFIG)/.plan
touch $(CONFIG)/.applied
.PHONY: shell
shell:
"$${SHELL:-sh}"
.PHONY: init
init: clean_init $(CONFIG)/.initialized
.PHONY: upgrade
upgrade:
terraform init -upgrade=true
touch $(CONFIG)/.initialized
.PHONY: clean_apply
clean_apply:
rm -f $(CONFIG)/.applied
.PHONY: clean_init
clean_init:
rm -f $(CONFIG)/.initialized
.PHONY: clean_plan
clean_plan:
rm -f $(CONFIG)/.plan
$(CONFIG)/.applied: $(CONFIG)/.initialized $(TFVARS) *.tf
terraform apply
rm -f $(CONFIG)/.plan
touch $(CONFIG)/.applied
$(CONFIG)/.plan: $(CONFIG)/.initialized $(TFVARS) *.tf
terraform plan -out $(CONFIG)/.plan
$(CONFIG)/.initialized: $(BACKEND_CONFIG) $(CONFIG)/.dependencies
terraform init
touch $(CONFIG)/.initialized
$(CONFIG)/.dependencies: *.tf
@if [ ! -d "$(CONFIG)" ]; then \
echo "No such config: $(CONFIG)" 1>&2; \
echo "Specify another config by passing CONFIG=name" 1>&2; \
fi
@grep -ohE \
"\b(backend|provider|resource|module) ['\"][[:alpha:]][[:alnum:]]*|\bsource *=.*|\bversion *=.*" *.tf | \
sed "s/['\"]//" | sort | uniq | \
tee /tmp/initdeps | \
diff -q .dependencies - >/dev/null 2>&1 || \
mv /tmp/initdeps .dependencies