SHELL := /bin/bash ENVIRONMENT ?= au-syd1 ENV_DIR = environments/$(ENVIRONMENT) .PHONY: clean init plan apply venv hiera output define vault_env @export VAULT_ADDR="https://vault.service.consul:8200" && \ export VAULT_TOKEN=$$(vault write -field=token auth/approle/login role_id=$$VAULT_ROLEID) && \ export PUPPET_CERT_CA=$$(vault kv get -field=public_key kv/service/puppet/certificates/ca) && \ export PUPPET_CERT_PUB=$$(vault kv get -field=public_key kv/service/puppet/certificates/terraform) && \ export PUPPET_CERT_PRIV=$$(vault kv get -field=private_key kv/service/puppet/certificates/terraform) && \ export TG_QUEUE_EXCLUDE_DIR="templates/base" && \ export TG_PROVIDER_CACHE=1 && \ export TG_TF_PATH=terraform && \ eval "$$(vault read -format=json kv/data/service/terraform/incus \ | jq -r '.data.data | to_entries[] | "export \(.key)=\(.value|@sh)"')" && \ export INCUS_INSECURE_TLS=1 && \ export INCUS_GLOBAL_CONF=$$(mktemp -d) && \ trap "rm -rf $$INCUS_GLOBAL_CONF" EXIT && \ mkdir -p $$INCUS_GLOBAL_CONF && \ mkdir -p $$INCUS_GLOBAL_CONF/servercerts && \ printf '%s\n' "$$INCUS_CONF_INCUSIMAGES_CERT" > $$INCUS_GLOBAL_CONF/servercerts/incus-images.crt && \ printf '%s\n' "$$INCUS_CONF_CONFIG_YAML" > $$INCUS_GLOBAL_CONF/config.yaml && \ printf '%s\n' "$$INCUS_CLIENT_CRT" > $$INCUS_GLOBAL_CONF/client.crt && \ printf '%s\n' "$$INCUS_CLIENT_KEY" > $$INCUS_GLOBAL_CONF/client.key endef clean: @echo "Cleaning Terraform files..." @find ./ -wholename '*.terragrunt-cache*' -delete @find ./ -name 'terragrunt_rendered.json' -delete @echo "Cleaning Python VENV..." @rm -rf .venv init: @$(call vault_env) && \ terragrunt run --all --non-interactive init -- -upgrade plan: init @$(call vault_env) && \ terragrunt run --all --parallelism 4 --non-interactive plan apply: init @$(call vault_env) && \ terragrunt run --all --parallelism 2 --non-interactive apply output: @$(call vault_env) && \ rm -f tf_outputs.json && \ terragrunt run --all --parallelism 10 --non-interactive output -json >> tf_outputs.json hiera: @echo "Setting up virtual environment with uv..." uv venv .venv && \ source .venv/bin/activate && \ uv pip install -r ci/autonode/requirements.txt @echo "Running update_hiera" .venv/bin/python ci/autonode/update_hiera.py \ --output-json tf_outputs.json \ --repo-url https://git.query.consul/unkinben/puppet-prod.git \ --clone-path $$(mktemp) \ --commit-template "Add Hiera config for {{ vmname }}" \ --file-template ci/autonode/templates/node.yaml.j2 \ --base-branch develop venv: uv venv --python 3.12 venv && \ source venv/bin/activate && \ uv pip install -r ci/requirements.txt list: source venv/bin/activate && \ python ci/review.py