.PHONY: all deploy check clean create debug editvars test VARS = group_vars/all/vars.yaml VALL = group_vars/all/all.yaml SECRET = ~/.config/ansible/hcloud.secret KEYDIR = roles/pub/files/keys TOKEN = $(shell ansible-vault decrypt --output - $(VARS) | grep hetzner_cloud_token | cut -d' ' -f2) DNSTOKEN = $(shell ansible-vault decrypt --output - $(VARS) | grep hetzner_dns_token | cut -d' ' -f2) SNAPNAME = $(shell cat $(VALL) | yq .snapshot) SNAPSHOT = $(shell hcloud image list -t snapshot -o yaml | \ yq '. | map(select(.description == "$(SNAPNAME)")) | .[].id') OPTIONS = -i inventory -t active CREATE_COMMAND = ansible-playbook create.yaml $(OPTIONS) DEPLOY_COMMAND = ansible-playbook deploy.yaml $(OPTIONS) CLEAN_COMMAND = ansible-playbook cleanup.yaml $(OPTIONS) HOSTS_COMMAND = ansible-playbook knownhosts.yaml $(OPTIONS) DEBUG_COMMAND = ansible-playbook debug.yaml $(OPTIONS) SHOW_COMMAND = ansible-inventory -i inventory/hosts.hcloud.yaml --list ENV = HCLOUD_TOKEN="$(TOKEN)" HETZNER_DNS_TOKEN="$(DNSTOKEN)" SNAPSHOT="$(SNAPSHOT)" ANSIBLE_VERBOSITY=$(verbose) all: create deploy debug: $(ENV) $(DEBUG_COMMAND) create: $(ENV) $(CREATE_COMMAND) hosts: $(ENV) $(HOSTS_COMMAND) # remove ssh control point, which may lead to hangs if wifi breaks during deployment deploy: rm -rf ~/.ansible/cp/* $(ENV) $(DEPLOY_COMMAND) clean: $(ENV) $(CLEAN_COMMAND) check: $(ENV) ansible-playbook deploy.yaml --syntax-check bin/encryptkeys $(KEYDIR) $(SECRET) check encryptkeys: bin/encryptkeys $(KEYDIR) $(SECRET) encrypt editvars: ansible-vault decrypt $(VARS) vi $(VARS) ansible-vault encrypt $(VARS) showvars: ansible-vault decrypt $(VARS) --output - showinventory: $(ENV) $(SHOW_COMMAND)