homelab-nomad/Makefile

101 lines
2.7 KiB
Makefile
Raw Normal View History

SLEEP_FOR ?= 10
VENV ?= venv
.PHONY: sleep
sleep:
sleep $(SLEEP_FOR)
.PHONY: default
default: check
2022-02-16 17:56:18 +00:00
.PHONY: all
all: cluster bootstrap-values apply
2022-02-16 17:56:18 +00:00
.PHONY: cluster
2022-05-18 21:22:21 +00:00
cluster: ansible-cluster
2022-02-17 22:03:42 +00:00
# Ensures virtualenv is present
$(VENV):
python3 -m venv $(VENV)
$(VENV)/bin/pip install -r requirements.txt
# Installs pre-commit hooks
.PHONY: install-hooks
install-hooks: $(VENV)
$(VENV)/bin/pre-commit install --install-hooks
# Checks files for encryption
.PHONY: check
check: $(VENV)
$(VENV)/bin/pre-commit run --all-files
# Creates a new secrets baseline
.secrets-baseline: $(VENV) Makefile
$(VENV)/bin/detect-secrets scan --exclude-secrets '(\$${.*}|from_env|fake|!secret|VALUE)' > .secrets-baseline
# Audits secrets against baseline
.PHONY: secrets-audit
secrets-audit: $(VENV) .secrets-baseline
$(VENV)/bin/detect-secrets audit .secrets-baseline
# Updates secrets baseline
.PHONY: secrets-update
secrets-update: $(VENV) .secrets-baseline
$(VENV)/bin/detect-secrets scan --baseline .secrets-baseline
2022-11-02 21:20:09 +00:00
.PHONY: ansible_galaxy
ansible_galaxy: ansible_galaxy/ansible_collections ansible_galaxy/roles
ansible_galaxy/ansible_collections: $(VENV) ./ansible_galaxy/requirements.yml
2022-11-21 01:26:33 +00:00
$(VENV)/bin/ansible-galaxy collection install -p ./ansible_galaxy -r ./ansible_galaxy/requirements.yml
2022-11-02 21:20:09 +00:00
ansible_galaxy/roles: $(VENV) ./ansible_galaxy/requirements.yml
2022-11-21 01:26:33 +00:00
$(VENV)/bin/ansible-galaxy install -p ./ansible_galaxy/roles -r ./ansible_galaxy/requirements.yml
.PHONY: ansible-cluster
2022-11-02 21:20:09 +00:00
ansible-cluster: $(VENV) ansible_galaxy
env VIRTUAL_ENV=$(VENV) $(VENV)/bin/ansible-playbook -K -vv \
$(shell test -f vault-keys.json && echo '-e "@vault-keys.json"') \
2022-11-02 21:20:09 +00:00
./ansible_playbooks/setup-cluster.yml
2022-02-16 17:56:18 +00:00
.PHONY: bootstrap-values
2023-05-09 18:39:27 +00:00
bootstrap-values: $(VENV)
2023-05-09 20:13:28 +00:00
env NOMAD_ADDR=http://192.168.2.101:4646 \
2023-05-09 18:39:27 +00:00
NOMAD_TOKEN=$(shell jq -r .SecretID nomad_bootstrap.json) \
2023-08-26 22:58:57 +00:00
$(VENV)/bin/python ./scripts/nomad_vars.py
2023-01-07 22:09:38 +00:00
.PHONY: recover-nomad
recover-nomad: $(VENV)
$(VENV)/bin/ansible-playbook -K ./ansible_playbooks/recover-nomad.yaml
2023-01-07 22:09:38 +00:00
2023-05-09 18:39:27 +00:00
.PHONY: stop-cluster
stop-cluster: $(VENV)
$(VENV)/bin/ansible-playbook -K ./ansible_playbooks/stop-cluster.yml
2022-09-07 18:05:27 +00:00
2022-07-25 17:50:12 +00:00
.PHONY: init
init:
@terraform init
2022-02-16 17:56:18 +00:00
.PHONY: plan
plan:
@terraform plan \
-var "nomad_secret_id=$(shell jq -r .SecretID nomad_bootstrap.json)" \
2022-02-16 17:56:18 +00:00
.PHONY: apply
apply:
@terraform apply \
-auto-approve \
-var "nomad_secret_id=$(shell jq -r .SecretID nomad_bootstrap.json)" \
2024-01-16 22:04:44 +00:00
.PHONY: refresh
refresh:
@terraform refresh \
-var "nomad_secret_id=$(shell jq -r .SecretID nomad_bootstrap.json)" \
.PHONY: clean
clean:
env VIRTUAL_ENV=$(VENV) $(VENV)/bin/ansible-playbook -vv \
./ansible_playbooks/clear-data.yml
find -name "*.tfstate" -exec rm '{}' \;
rm -f ./vault-keys.json ./nomad_bootstrap.json