SERVER ?= "192.168.2.41"
SSH_USER = iamthefij
SSH_KEY = ~/.ssh/id_ed25519

.PHONY: rm-nomad
rm-nomad:
	hashi-up nomad uninstall \
		--ssh-target-addr $(SERVER) \
		--ssh-target-key $(SSH_KEY) \
		--ssh-target-user $(SSH_USER) \
		--ssh-target-sudo-pass $(SSH_TARGET_SUDO_PASS)

.PHONY: nomad-up
nomad-up:
	hashi-up nomad install \
		--ssh-target-addr $(SERVER) \
		--ssh-target-key $(SSH_KEY) \
		--ssh-target-user $(SSH_USER) \
		--ssh-target-sudo-pass $(SSH_TARGET_SUDO_PASS) \
		--server --client
	hashi-up nomad start \
		--ssh-target-addr $(SERVER) \
		--ssh-target-key $(SSH_KEY) \
		--ssh-target-user $(SSH_USER) \
		--ssh-target-sudo-pass $(SSH_TARGET_SUDO_PASS)

.PHONY: rm-consul
rm-consul:
	hashi-up consul uninstall \
		--ssh-target-addr $(SERVER) \
		--ssh-target-key $(SSH_KEY) \
		--ssh-target-user $(SSH_USER) \
		--ssh-target-sudo-pass $(SSH_TARGET_SUDO_PASS)

.PHONY: consul-up
consul-up:
	hashi-up consul install \
		--ssh-target-addr $(SERVER) \
		--ssh-target-key $(SSH_KEY) \
		--ssh-target-user $(SSH_USER) \
		--ssh-target-sudo-pass $(SSH_TARGET_SUDO_PASS) \
		--advertise-addr $(SERVER) \
		--client-addr 0.0.0.0 \
		--http-addr 0.0.0.0 \
		--connect \
		--server
	hashi-up consul start \
		--ssh-target-addr $(SERVER) \
		--ssh-target-key $(SSH_KEY) \
		--ssh-target-user $(SSH_USER) \
		--ssh-target-sudo-pass $(SSH_TARGET_SUDO_PASS)

.PHONY: cluster
cluster: ansible-cluster

venv/bin/ansible:
	python3 -m venv venv
	./venv/bin/pip install ansible
	./venv/bin/pip install python-consul
	./venv/bin/pip install hvac

.PHONY: ansible-cluster
ansible-cluster: venv/bin/ansible
	./venv/bin/ansible-galaxy install -p roles -r roles/requirements.yml
	./venv/bin/ansible-galaxy collection install -r collections/requirements.yml
	env VIRTUAL_ENV=/Users/ifij/workspace/iamthefij/orchestration-tests/nomad/venv ./venv/bin/ansible-playbook -K -vv \
		$(shell test -f vault-keys.json && echo '-e "@vault-keys.json"') \
		-i ansible_hosts.yml -M ./roles ./setup-cluster.yml

.PHONY: plan
plan:
	@terraform plan \
		-var "nomad_secret_id=$(shell jq -r .SecretID nomad_bootstrap.json)" \
		-var "vault_token=$(shell jq -r .root_token vault-keys.json)"

.PHONY: apply
apply:
	@terraform apply \
		-var "nomad_secret_id=$(shell jq -r .SecretID nomad_bootstrap.json)" \
		-var "vault_token=$(shell jq -r .root_token vault-keys.json)"

# Install CNI on hosts?
# curl -L -o cni-plugins.tgz "https://github.com/containernetworking/plugins/releases/download/v1.0.0/cni-plugins-linux-$( [ $(uname -m) = aarch64 ] && echo arm64 || echo amd64)"-v1.0.0.tgz
# sudo mkdir -p /opt/cni/bin
# sudo tar -C /opt/cni/bin -xzf cni-plugins.tgz