Skip to content

Instantly share code, notes, and snippets.

@uncomplexity
Created July 30, 2025 08:55
Show Gist options
  • Select an option

  • Save uncomplexity/1c6a7739ac678fe0dead0c1ef868ffbb to your computer and use it in GitHub Desktop.

Select an option

Save uncomplexity/1c6a7739ac678fe0dead0c1ef868ffbb to your computer and use it in GitHub Desktop.
Terraform Shell
#!/bin/bash
# Initialize
if [ "$1" = "--init" ] || [ "$1" = "-i" ]; then
terraform init -var-file=".tfvars"
fi
# Refresh
if [ "$1" = "--refresh" ] || [ "$1" = "-r" ]; then
terraform init -var-file=".tfvars"
terraform refresh -var-file=".tfvars"
fi
# Plan
if [ "$1" = "--plan" ] || [ "$1" = "-p" ]; then
terraform init -var-file=".tfvars"
terraform refresh -var-file=".tfvars"
terraform plan -var-file=".tfvars" -input=false
fi
# Apply
if [ "$1" = "--apply" ] || [ "$1" = "-a" ]; then
terraform init -var-file=".tfvars"
terraform refresh -var-file=".tfvars"
terraform plan -var-file=".tfvars" -input=false
terraform apply -var-file=".tfvars" -input=false -auto-approve
fi
# Destroy
if [ "$1" = "--destroy" ] || [ "$1" = "-d" ]; then
terraform init -var-file=".tfvars"
terraform refresh -var-file=".tfvars"
terraform destroy -var-file=".tfvars" -input=false
fi
# Taint
# bash ./tf.sh -st <prefix>
if [ "$1" = "--state-taint" ] || [ "$1" = "-st" ]; then
if [ -n "$2" ]; then
terraform state list | grep "$2" | xargs -n1 terraform taint
fi
fi
# State List
# bash ./tf.sh -sl <prefix>
# bash ./tf.sh -sl
if [ "$1" = "--state-list" ] || [ "$1" = "-sl" ]; then
if [ -n "$2" ]; then
terraform state list | grep "$2"
else
terraform state list
fi
fi
# State Remove
# bash ./tf.sh -sr <prefix>
# bash ./tf.sh -sr
if [ "$1" = "--state-rm" ] || [ "$1" = "-sr" ]; then
if [ -n "$2" ]; then
terraform state list | grep "$2" | xargs terraform state rm
else
terraform state list | xargs terraform state rm
fi
fi
if [ -z "$1" ]; then
set -- --help
fi
# State Unlock
# bash ./tf.sh -su <LOCK_ID>
if [ "$1" = "--state-unlock" ] || [ "$1" = "-su" ]; then
if [ -n "$2" ]; then
terraform force-unlock -force "$2"
fi
fi
# Help
if [ "$1" = "--help" ] || [ "$1" = "-h" ]; then
echo "
Usage: ./tf.sh <command> [optional_pattern]
Terraform wrapper script
Available commands:
-i, --init Run terraform init
-r, --refresh Init + refresh
-p, --plan Init + refresh + plan
-a, --apply Init + refresh + plan + apply (auto-approve)
-d, --destroy Init + refresh + destroy
-sl, --state-list [pattern] List state (optionally filtered)
-sr, --state-rm [pattern] Remove state entries (optionally filtered)
-st, --state-taint <pattern> Taint state entries (pattern required)
-su, --state-unclock <id> Force unlock state (id required)
-h, --help Show this help message
Examples:
./tf.sh --state-list
./tf.sh --state-list github
./tf.sh --state-rm bunnynet
./tf.sh --state-taint github_secret
"
exit 0
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment