Last active
September 17, 2016 00:03
-
-
Save jpluscplusm/7b345e3853dcefaefc82fb2d9c734422 to your computer and use it in GitHub Desktop.
Terraform Makefile wrapper with remote state mgmt/bootstrap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/.terraform/terraform.tfstate* | |
/plan.out | |
/.plan.out.* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.PHONY: infra plan apply tf-apply clean mrproper help | |
.DEFAULT_GOAL := help | |
AWS_PROFILE ?= Default | |
NOW := $(shell date +"%Y%m%d-%H%M%S") | |
RESOURCES := resources | |
STATE := .terraform/terraform.tfstate | |
TF_FILES := $(wildcard $(RESOURCES)/*.tf $(STATE)) | |
PLAN := plan.out | |
export AWS_PROFILE | |
infra: plan apply ## Do whatever's needed to bring the infra up to date | |
plan: $(PLAN) ## Plan, display and store that which would be needed to bring the infra up to date | |
$(PLAN): $(STATE) $(TF_FILES) | |
terraform plan -out $(PLAN) $(RESOURCES)/ | |
apply: $(STATE) tf-apply clean ## Apply the current plan of operations to the infra, without replanning | |
tf-apply: | |
terraform apply $(PLAN) | |
show: ## Print what the current plan of operations would do, without replanning | |
terraform show $(PLAN) | |
clean: ## Archive the last plan | |
mv $(PLAN) .$(PLAN).$(NOW) | |
mrproper: ## Remove all non-version-controlled files | |
rm -f $(STATE) $(PLAN) .$(PLAN).* | |
.terraform/terraform.tfstate: | |
terraform remote config \ | |
-backend=S3 \ | |
-backend-config="bucket=my-tfstate-bucket" \ | |
-backend-config="key=terraform/live/terraform.tfstate" \ | |
-backend-config="region=eu-west-1" \ | |
-backend-config="encrypt=true" \ | |
-backend-config="acl=private" | |
help: ## Display this help | |
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# this directory holds the .tf resource definitions. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment