For years Makefile was (and still is the best) in building tools which runs on Unix, Linux, and their flavors.
For that reason i thought to publish my Makefile for working with Terraform project, that might help you in your next project
This assumes 2 thinks. You are working with a local
tfstate file and that you will put the Makefile in the same directory as the
*.tf files, just to be sure :D
SHELL:=/bin/bash all: plan help: @echo "Usage: make plan" @echo "After applying terraform plan it prompt if to apply the changes." @echo "Other commands: " @echo " * make show - to list what the plan will apply " @echo " * make clean - delete the executed plan, so no files left behind " @echo " * make get - update the teffarom modules" @echo " * make format - execute terraform fmt" clean: rm -f /tmp/plan_stg get: @echo "Updating modules" @terraform get -update plan: format get @echo "Checking Infrastracture" @terraform plan -parallelism=80 -refresh=true -module-depth=-1 -out /tmp/plan_stg $(MAKE) confirm $(MAKE) apply show: @echo "Showing plan to apply" @terraform show /tmp/plan_stg format: @echo "Format existing code" @terraform fmt apply: @echo "Applying changes to Infrastracture" @terraform apply -parallelism=80 /tmp/plan_stg @echo "Clean up after myself" $(MAKE) clean confirm: read -r -t 5 -p "Type y to apply, otherwise it will abort (timeout in 5 seconds): " CONTINUE; \ if [ ! $$CONTINUE == "y" ] || [ -z $$CONTINUE ]; then \ echo "Abort apply." ; \ exit 1; \ fi
So now you can run commands such as
make plan or
This is pretty basic Makefile but works pretty well in my projects.