ROOT_DIR?=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
INVENTORY_PATH?="${ROOT_DIR}/inventory/"
ROLES_PATH?="${ROOT_DIR}/roles/"
AWS_PROFILE?="gdb-delphi-dev"

## -
## help

##    help - show this message
.PHONY: help
help:
	@echo "Run command:\n  make <target>\n"
	@grep -E -h '^## .*' $(MAKEFILE_LIST) | sed -n 's/^##//p'  | column -t -s '-' |  sed -e 's/^/ /'


## -
## Ansible inventory

##   inventory/list - list of ec2 instances
.PHONY: inventory/list
inventory/list:
	ansible-inventory \
		-i ${INVENTORY_PATH} \
		--list

##   inventory/graph - list of ec2 instances
.PHONY: inventory/graph
inventory/graph:
		ansible-inventory \
  		-i ${INVENTORY_PATH} \
  		--graph

## -
## Ansible

##   galaxy/install - install required roles from ansible galaxy
.PHONY: galaxy/install
galaxy/install:
	ansible-galaxy install -r requirements.yml --roles-path ${ROLES_PATH}

##   ansible/ping - check connectivity
.PHONY: ansible/ping
ansible/ping:
	ansible -i ${INVENTORY_PATH} \
		-m ping tag_os_platform_linux

##   ansible/play/local - download Splunk and Qualys binaries
.PHONY: ansible/play/local
ansible/play/local:
	ansible-playbook -i ${INVENTORY_PATH} local.yaml

##   ansible/play/remote - apply changes to all accessible instances
.PHONY: ansible/play/remote
ansible/play/remote:
	ansible-playbook -i ${INVENTORY_PATH} remote.yaml

##   ansible/play/sonar - apply changes to sonar
.PHONY: ansible/play/sonar
ansible/play/sonar:
	ansible-playbook --vault-password-file sonar_vault_password-client.sh -i ${INVENTORY_PATH} sonar.yaml --limit 10.50.14.82

## -
## Vagrant

##   vargant/up - bring up VM for local testing
.PHONY: vargant/up
vagrant/up:
	@vagrant up

##   vargant/ssh - connect to VM for testing
.PHONY: vargant/ssh
vagrant/ssh:
	@vagrant ssh

##   vargant/down - bring down VM
.PHONY: vargant/down
vagrant/down:
	@vagrant down

##   vargant/provision - apply changes to VM
.PHONY: vargant/provision
vagrant/provision:
	@vagrant provision

## -
## SSH

##   ssh/ansible - download ansible private ssh key localy
.PHONY: ssh/ansible
ssh/ansible:
	@AWS_PROFILE=${AWS_PROFILE} aws secretsmanager \
		get-secret-value --secret-id infra/administration/ssh/ansible \
		| jq '.SecretString' \
		| xargs echo -e > ~/.ssh/ansible.pem \
		&& chmod 400 ~/.ssh/ansible.pem

##   ssh/infra_vpn - download openvpn private ssh key localy
.PHONY: ssh/infra_vpn
ssh/infra-vpn:
	@AWS_PROFILE=${AWS_PROFILE} aws secretsmanager \
		get-secret-value --secret-id infra/administration/ssh/infra-vpn \
		| jq '.SecretString' \
		| xargs echo -e > ~/.ssh/infra-vpn.pem \
		&& chmod 400 ~/.ssh/infra-vpn.pem
