Skip to content

Commit af3fe64

Browse files
committed
fix: improve variable usage for terraform
1 parent 9688b89 commit af3fe64

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

Makefile.terraform

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,31 @@
55
## Override any of the below ?= variables in .config.mk
66
-include .config.mk
77

8+
AWS_CONFIG ?= ${HOME}/.aws
9+
TERRAFORM_DIR ?= .terraform
810
TERRAFORM_IMAGE ?= docker.io/hashicorp/terraform
911
TERRAFORM_VERSION ?= 1.0.7 ## Terraform is very version specific, so know what you need
1012
TERRAFORM_STATE_S3 ?= yes ## If using S3 for shared state, override this with a 'yes'
1113
CONTAINER_ENGINE ?= docker ## Commands will be executed via the container engine, expected to be docker cli compatible
12-
CONTAINER_WORK_DIR ?= /data
1314
CONTAINER_ENV ?= .env
15+
CONTAINER_WORK_DIR ?= /data
1416

15-
BASE_ENV := -v ~/.aws:/root/.aws:Z --env-file=$(CONTAINER_ENV)
17+
# Helper switches for the BASE_COMMAND
18+
ifeq ("$(AWS_CONFIG)", "$(wildcard $(AWS_CONFIG))")
19+
BASE_ENV := -v $(AWS_CONFIG):/root/.aws:Z --env-file=$(CONTAINER_ENV)
20+
endif
21+
BASE_ENV := $(BASE_ENV) --env-file=$(CONTAINER_ENV)
1622
BASE_WORKDIR := -w $(CONTAINER_WORK_DIR) -v "$(CURDIR)":$(CONTAINER_WORK_DIR):Z
23+
1724
# Container based commands to for use handling target steps
1825
BASE_COMMAND := $(CONTAINER_ENGINE) run --rm -it $(BASE_ENV) $(BASE_WORKDIR)
1926
TERRAFORM_COMMAND := $(BASE_COMMAND) $(TERRAFORM_IMAGE):$(TERRAFORM_VERSION)
2027

2128
# Determine some runtime values
22-
ifeq (".terraform/environment", "$(wildcard .terraform/environment)")
29+
TERRAFORM_ENVIRONMENT := $(TERRAFORM_DIR)/environment
30+
ifeq ("$(TERRAFORM_ENVIRONMENT)", "$(wildcard $(TERRAFORM_ENVIRONMENT))")
2331
# if file exists on disk, get the workspace from it
24-
TERRAFORM_VAR_FILE := -var-file=$(shell cat .terraform/environment).tfvars
32+
TERRAFORM_VAR_FILE := -var-file=$(shell cat $(TERRAFORM_ENVIRONMENT)).tfvars
2533
endif
2634

2735
all: help
@@ -43,16 +51,16 @@ help: ## Show this help, includes list of all actions.
4351

4452
.PHONY: clean
4553
clean: ## Cleanup the local checkout
46-
-rm -f *.zip *.backup .terraform
54+
-rm -f *.zip *.backup $(TERRAFORM_DIR)
4755

4856
$(CONTAINER_ENV):
4957
@env | awk '!/TOKEN/ && /^(AWS)/ { print }' | sort > $(@)
5058

51-
.terraform: $(BUILD_ENV)
52-
@if [ ! -d .terraform ]; then $(TERRAFORM_COMMAND) init; else $(TERRAFORM_COMMAND) get --update > /dev/null; fi
59+
$(TERRAFORM_DIR): $(BUILD_ENV)
60+
@if [ ! -d $(TERRAFORM_DIR) ]; then $(TERRAFORM_COMMAND) init; else $(TERRAFORM_COMMAND) get --update > /dev/null; fi
5361

5462
.PHONY: init
55-
init: .terraform ## Initalize shared storage bucket for state and ensure modules are loaded
63+
init: $(TERRAFORM_DIR) ## Initalize shared storage bucket for state and ensure modules are loaded
5664

5765
.PHONY: list-workspaces
5866
list-workspaces: init ## Displays list of workspaces

0 commit comments

Comments
 (0)