/ 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