|
| 1 | +.DEFAULT_GOAL := help |
| 2 | +.PHONY: help plan apply deps |
| 3 | + |
| 4 | +TF_SOURCE := sandbox |
| 5 | +BUILD_DIR := .build |
| 6 | +BUILD_TARGET := sandbox.tf |
| 7 | +CREDENTIALS_FILE := credentials.tfvars |
| 8 | + |
| 9 | +help: |
| 10 | + @echo "Builds Runnable AWS infrastructures with Terraform" |
| 11 | + @echo "" |
| 12 | + @echo "Environment Variables:" |
| 13 | + @echo " TERRAFORM_ENVIRONMENT - Name of the environment for which to apply changes" |
| 14 | + @echo "" |
| 15 | + @echo "Targets:" |
| 16 | + @echo " apply Commits the plan and builds the infrastructure" |
| 17 | + @echo " deps Ensures system requirements are met to run Terraform" |
| 18 | + @echo " env Display the working environment (TERRAFORM_ENVIRONMENT)" |
| 19 | + @echo " help Displays this message" |
| 20 | + @echo " plan Builds a new Terraform plan" |
| 21 | + @echo "" |
| 22 | + @echo "For an indepth guide see: https://github.com/codenow/devops-scripts README" |
| 23 | + |
| 24 | +env: |
| 25 | + @echo "Working environment: ${TERRAFORM_ENVIRONMENT}" |
| 26 | + |
| 27 | +deps: |
| 28 | + @hash terraform > /dev/null 2>&1 || \ |
| 29 | + (echo "Terraform not installed (try: brew install terraform)"; exit 1) |
| 30 | + @test -n "$(TERRAFORM_ENVIRONMENT)" || \ |
| 31 | + (echo "Variable TERRAFORM_ENVIRONMENT is missing"; exit 1) |
| 32 | + @test -e "${CREDENTIALS_FILE}" || \ |
| 33 | + (echo "Cannot find credentials variables, ask someone for '${CREDENTIALS_FILE}'") |
| 34 | + |
| 35 | +compile: |
| 36 | + @echo "Compiling .tf files from sandbox/" |
| 37 | + @mkdir -p .build |
| 38 | + @find ${TF_SOURCE} \ |
| 39 | + | grep -E '${TF_SOURCE}/.*[.]tf' \ |
| 40 | + | xargs cat > ${BUILD_DIR}/${BUILD_TARGET} |
| 41 | + |
| 42 | +apply: compile deps |
| 43 | + terraform apply \ |
| 44 | + -var-file="${CREDENTIALS_FILE}" \ |
| 45 | + -var-file="environment/${TERRAFORM_ENVIRONMENT}.tfvars" \ |
| 46 | + ${BUILD_DIR}/ |
| 47 | + |
| 48 | +destroy: compile deps |
| 49 | + terraform destroy \ |
| 50 | + -var-file="${CREDENTIALS_FILE}" \ |
| 51 | + -var-file="environment/${TERRAFORM_ENVIRONMENT}.tfvars" \ |
| 52 | + ${BUILD_DIR}/ |
| 53 | + |
| 54 | +plan: compile deps |
| 55 | + terraform plan \ |
| 56 | + -var-file="${CREDENTIALS_FILE}" \ |
| 57 | + -var-file="environment/${TERRAFORM_ENVIRONMENT}.tfvars" \ |
| 58 | + ${BUILD_DIR}/ |
0 commit comments