123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- #! /bin/bash
- #
- # Do a more sane apply-all via terragrunt
- function argparse {
- PARAMS=""
- ENVS=()
- while (( "$#" )); do
- case "$1" in
- -h|--help)
- echo Usage: $0 '[-l|--local] [-t|--test] [-s|--skipqualys] [ENVFLAGS] [-d|--debug]'
- echo " where ENVFLAGS is one or more of --envprod, --envcommon, --envtest, or --envall. --envall is the default."
- exit 1
- ;;
- -t|--test)
- TESTING="/bin/echo TESTING: "
- shift
- ;;
- -l|--local)
- LOCAL="--local"
- shift
- ;;
- -n|--notlocal)
- NOTLOCAL="--notlocal"
- shift
- ;;
- -d|--debug)
- >&2 echo debug: Enabling debugging..
- DEBUG=1
- debugstr="--debug"
- shift
- ;;
- --envall)
- ENVS+=("test")
- ENVS+=("common")
- ENVS+=("prod")
- shift
- ;;
- --envtest)
- ENVS+=("test")
- shift
- ;;
- --envcommon)
- ENVS+=("common")
- shift
- ;;
- --envprod)
- ENVS+=("prod")
- shift
- ;;
- -r|--refresh)
- REFRESH="--refresh"
- shift
- ;;
- -s|--skipqualys)
- SKIPQUALYS="--skipqualys"
- shift
- ;;
- # -p|--only-path)
- # if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then
- # ONLY_PATH=$2
- # shift 2
- # else
- # echo "Error: Argument for $1 is missing" >&2
- # exit 1
- # fi
- # ;;
- -*|--*=) # unsupported flags
- echo "Error: Unsupported flag $1" >&2
- exit 1
- ;;
- *) # preserve positional arguments
- PARAMS="$PARAMS $1"
- shift
- ;;
- esac
- done
- if [[ ${#ENVS[@]} == 0 ]]; then
- # Default to all environments
- ENVS+=("test")
- ENVS+=("common")
- ENVS+=("prod")
- fi
- # set positional arguments in their proper place
- eval set -- "$PARAMS"
- }
- # Main
- argparse $*
- SHORT_PWD=$( basename ${PWD} )
- PARENT_PWD=$( basename $( cd .. && pwd ) )
- [[ $DEBUG == 1 ]] && >&2 echo debug: PWD=$PWD
- [[ $DEBUG == 1 ]] && >&2 echo debug: SHORT_PWD=$SHORT_PWD
- # Sanity Checking
- if [[ $SHORT_PWD != "xdr-terraform-live" ]]; then
- read -p "WARNING! Not running from 'xdr-terraform-live'. PWD is $SHORT_PWD. Continue anyway? [Y/n]? " -n 1 -r
- echo ""
- if [[ $REPLY =~ ^[Nn]$ ]]
- then
- echo Exiting...
- exit 1
- fi
- fi
- [[ $DEBUG == 1 ]] && >&2 echo debug: ENVS=${ENVS[*]}
- for e in ${ENVS[*]}; do
- pushd $e > /dev/null
- for p in aws aws-us-gov; do
- pushd $p > /dev/null
- for a in $(find . -type d -mindepth 1 -maxdepth 1); do
- pushd $a > /dev/null
- echo ""
- echo ""
- echo "*************************************************************************************"
- echo "Beginning environment '$e', partition '$p', account '$a'"
- echo "*************************************************************************************"
- echo ""
- echo ""
- if [[ -f UNUSED.ACCOUNT ]]; then
- echo -- This account is marked as unused. Skipping...
- popd > /dev/null
- continue
- fi
- if [[ -f UNMANAGED.ACCOUNT ]]; then
- echo -- This account is marked as unmanaged. Skipping...
- popd > /dev/null
- continue
- fi
- EXITCODE=1 # Assume error
- if [[ $DEBUG == 1 ]]; then
- echo debug: Would run: terragrunt-apply-all $TESTING $REFRESH $LOCAL $NOTLOCAL $debugstr $SKIPQUALYS
- EXITCODE=$?
- else
- terragrunt-apply-all $TESTING $REFRESH $LOCAL $NOTLOCAL $DEBUG $SKIPQUALYS
- EXITCODE=$?
- fi
- if [[ $EXITCODE != 0 ]]; then
- # Prompt to continue after each module. Easier than ctrl-c...
- read -p "Terragrunt failed for environment '$e', partition '$p', account '$a'.. Continue to next account [Y/n]? " -n 1 -r
- echo ""
- if [[ $REPLY =~ ^[Nn]$ ]]
- then
- echo Exiting...
- exit 1
- fi
- fi
- popd > /dev/null
- done
- popd > /dev/null
- done
- popd > /dev/null
- done
- echo Finished.
- exit 0
|