/ Makefile
Makefile
 1  # Colors
 2  YLW = \033[1;33m
 3  RED = \033[0;31m
 4  GRN = \033[0;32m
 5  BLU = \033[0;34m
 6  BLD = \033[1m
 7  RST = \033[0m
 8  
 9  OS = $(shell uname -s | tr A-Z a-z)
10  ARCH = "${OS}-$(shell uname -m)"
11  
12  ifeq ($(OS),darwin)
13  PROVISIONER_SHA1 = bd688a503f526beedaf6ef5d2dba1128051573b6
14  else
15  PROVISIONER_SHA1 = 1cbdf2bafe9e968a039264a6d3e6b58a2d2576eb
16  endif
17  
18  TF_PLUGINS_DIR = $(HOME)/.terraform.d/plugins
19  
20  PROVISIONER_NAME = terraform-provisioner-ansible
21  PROVISIONER_VERSION = v2.5.1
22  PROVISIONER_ARCHIVE = $(PROVISIONER_NAME)-$(ARCH)-$(PROVISIONER_VERSION)
23  PROVISIONER_URL = https://github.com/status-im/terraform-provisioner-ansible/releases/download/$(PROVISIONER_VERSION)/$(PROVISIONER_ARCHIVE)
24  PROVISIONER_PATH = $(TF_PLUGINS_DIR)/$(PROVISIONER_NAME)
25  
26  all: roles-install install-provisioner secrets init-terraform checks
27  	@echo "Success!"
28  
29  roles-install:
30  	@ansible/roles.py --install
31  
32  roles-check:
33  	@ansible/roles.py --check || \
34  		echo -e '\n$(YLW)WARNING: Local role versions appear to be incorrect.$(RST)' >&2
35  
36  roles-update:
37  	@ansible/roles.py --update
38  
39  roles: roles-install roles-check
40  
41  $(PROVISIONER_PATH):
42  	@mkdir -p $(TF_PLUGINS_DIR)/$(ARCH); \
43  	wget -q $(PROVISIONER_URL) -O $(PROVISIONER_PATH); \
44  	chmod +x $(PROVISIONER_PATH); \
45  
46  install-provisioner: $(PROVISIONER_PATH)
47  	@echo "$(PROVISIONER_SHA1)  $(PROVISIONER_PATH)" | shasum -c \
48  		|| rm -v $(PROVISIONER_PATH)
49  
50  secrets:
51  	pass services/consul/ca-crt > ansible/files/consul-ca.crt
52  	pass services/consul/client-crt > ansible/files/consul-client.crt
53  	pass services/consul/client-key > ansible/files/consul-client.key
54  	pass services/vault/certs/root-ca/cert > ansible/files/vault-ca.crt
55  	pass services/vault/certs/client-user/cert > ansible/files/vault-client-user.crt
56  	pass services/vault/certs/client-user/privkey > ansible/files/vault-client-user.key
57  
58  init-terraform: consul-check
59  	terraform init -upgrade=true
60  
61  cleanup:
62  	rm -r $(TF_PLUGINS_DIR)/$(ARCHIVE)
63  
64  consul-check:
65  ifndef CONSUL_HTTP_TOKEN
66  	@echo -e "$(RED)$(BLD)ERROR: No CONSUL_HTTP_TOKEN env variable set!$(RST)"; exit 1
67  endif
68  
69  vault-check:
70  ifndef VAULT_TOKEN
71  	@echo -e "$(RED)$(BLD)ERROR: No VAULT_TOKEN env variable set!$(RST)"; exit 1
72  endif
73  
74  DIRENV_LOADED ?= $(shell direnv status --json | jq .state.loadedRC.allowed)
75  direnv-check:
76  	@if [[ "$(DIRENV_LOADED)" -ne 0 ]] && [[ -z "$${DIRENV_IN_ENVRC}" ]]; then \
77  		echo -e "$(YLW)WARNING: This repo assumes use of Direnv:$(RST)" \
78  				"$(BLD)"'eval "$$(direnv hook zsh)"; direnv allow'"$(RST)"; \
79  	fi
80  
81  checks: roles-check direnv-check consul-check vault-check
82  	@echo -e "\n$(GRN)$(BLD)WELCOME BACK, COMMANDER$(RST)"
83  
84  .PHONY = checks roles-check direnv-check consul-check vault-check