Created
July 30, 2025 08:55
-
-
Save uncomplexity/1c6a7739ac678fe0dead0c1ef868ffbb to your computer and use it in GitHub Desktop.
Terraform Shell
This file contains hidden or 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
| #!/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