Skip to content

Instantly share code, notes, and snippets.

@pancudaniel7
Created December 26, 2023 13:11
Show Gist options
  • Save pancudaniel7/7c53bdd3b7b8d532ad8940aaac500137 to your computer and use it in GitHub Desktop.
Save pancudaniel7/7c53bdd3b7b8d532ad8940aaac500137 to your computer and use it in GitHub Desktop.
#!/bin/bash
# Generates terraform multiple workspaces project structure
project_name=${1:-terraform-project}
mkdir $project_name && \
cd $project_name && \
mkdir -p environments/{dev,staging,prod} && \
mkdir -p modules && \
touch environments/{dev,staging,prod}/{backend,variables,outputs,main}.tf && \
touch {dev,staging,prod}.tfvars && \
touch {main,backend,providers,variables}.tf
state_file_name=${2:-terraform-project-state} && \
region=${3:-us-east-1}
cat <<EOF > backend.tf
terraform {
backend "s3" {
bucket = "$state_file_name"
key = "$state_file_name.tfstate"
region = "$region"
dynamodb_table = "$state_file_name-lock-table"
encrypt = true
}
}
EOF
cd ..
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment