55## Override any of the below ?= variables in .config.mk
66-include .config.mk
77
8+ AWS_CONFIG ?= ${HOME}/.aws
9+ TERRAFORM_DIR ?= .terraform
810TERRAFORM_IMAGE ?= docker.io/hashicorp/terraform
911TERRAFORM_VERSION ?= 1.0.7 ## Terraform is very version specific, so know what you need
1012TERRAFORM_STATE_S3 ?= yes ## If using S3 for shared state, override this with a 'yes'
1113CONTAINER_ENGINE ?= docker ## Commands will be executed via the container engine, expected to be docker cli compatible
12- CONTAINER_WORK_DIR ?= /data
1314CONTAINER_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)
1622BASE_WORKDIR := -w $(CONTAINER_WORK_DIR) -v "$(CURDIR)":$(CONTAINER_WORK_DIR):Z
23+
1724# Container based commands to for use handling target steps
1825BASE_COMMAND := $(CONTAINER_ENGINE) run --rm -it $(BASE_ENV) $(BASE_WORKDIR)
1926TERRAFORM_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
2533endif
2634
2735all: help
@@ -43,16 +51,16 @@ help: ## Show this help, includes list of all actions.
4351
4452.PHONY: clean
4553clean: ## 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
5866list-workspaces: init ## Displays list of workspaces
0 commit comments