Skip to content

Instantly share code, notes, and snippets.

@goabonga
Created April 25, 2025 00:24
Show Gist options
  • Select an option

  • Save goabonga/f559341ab292cbaaae55c832f92825a9 to your computer and use it in GitHub Desktop.

Select an option

Save goabonga/f559341ab292cbaaae55c832f92825a9 to your computer and use it in GitHub Desktop.
GCP Infra Bootstrap with Cookiecutter and Terragrunt Generator
#!/usr/bin/env bash
echo "build infra"
tmpfile=$(mktemp)
cat <<EOF > "$tmpfile"
default_context:
full_name: "Chris"
email: "goabonga@pm.me"
github_username: "goabonga"
project_name: "GCP Infrastructure"
remote_state_bucket_name: ""
default_environment: "dev"
EOF
cookiecutter -f --no-input --config-file "$tmpfile" https://github.com/goabonga/cookiecutter-terragrunt-project.git
rm "$tmpfile"
cd gcp_infrastructure
python -m venv .venv
./.venv/bin/python -m pip install terragrunt-generator
./.venv/bin/terragrunt-generator \
-u https://github.com/terraform-google-modules/terraform-google-cloud-dns.git \
-v v5.3.0 \
-l network.dns.internal \
--yaml-output ./ \
--yaml-for-env dev \
--output google/network/dns/internal
./.venv/bin/terragrunt-generator \
-u https://github.com/terraform-google-modules/terraform-google-cloud-dns.git \
-v v5.3.0 \
-l network.dns.external \
--yaml-output ./ \
--yaml-for-env dev \
--output google/network/dns/external
./.venv/bin/terragrunt-generator \
-u https://github.com/terraform-google-modules/terraform-google-network.git \
-v v10.0.0 \
-l network.vpc \
-p modules/vpc \
--yaml-output ./ \
--yaml-for-env dev \
--output google/network/vpc
./.venv/bin/terragrunt-generator \
-u https://github.com/terraform-google-modules/terraform-google-network.git \
-v v10.0.0 \
-l network.subnets \
-p modules/subnets-beta \
--yaml-output ./ \
--yaml-for-env dev \
--output google/network/subnets
./.venv/bin/terragrunt-generator \
-u https://github.com/terraform-google-modules/terraform-google-network.git \
-v v10.0.0 \
-l network.firewall \
-p modules/firewall-rules \
--yaml-output ./ \
--yaml-for-env dev \
--output google/network/firewall
./.venv/bin/terragrunt-generator \
-u https://github.com/terraform-google-modules/terraform-google-network.git \
-v v10.0.0 \
-l network.routes \
-p modules/routes-beta \
--yaml-output ./ \
--yaml-for-env dev \
--output google/network/routes
./.venv/bin/terragrunt-generator \
-u https://github.com/terraform-google-modules/terraform-google-network.git \
-v v10.0.0 \
-l network.peering \
-p modules/network-peering \
--yaml-output ./ \
--yaml-for-env dev \
--output google/network/peering
./.venv/bin/terragrunt-generator \
-u https://github.com/terraform-google-modules/terraform-google-cloud-nat.git \
-v v5.3.0 \
-l network.nat \
--yaml-output ./ \
--yaml-for-env dev \
--output google/network/nat
./.venv/bin/terragrunt-generator \
-u https://github.com/terraform-google-modules/terraform-google-address.git \
-v v4.1.0 \
-l network.address.internal \
--yaml-output ./ \
--yaml-for-env dev \
--output google/network/address/internal
./.venv/bin/terragrunt-generator \
-u https://github.com/terraform-google-modules/terraform-google-address.git \
-v v4.1.0 \
-l network.address.external \
--yaml-output ./ \
--yaml-for-env dev \
--output google/network/address/external
./.venv/bin/terragrunt-generator \
-u https://github.com/terraform-google-modules/terraform-google-kms.git \
-v v4.0.0 \
-l kms \
--yaml-output ./ \
--yaml-for-env dev \
--output google/kms
./.venv/bin/terragrunt-generator \
-u https://github.com/GoogleCloudPlatform/terraform-google-artifact-registry.git \
-v v0.3.0 \
-l registries.docker \
--yaml-output ./ \
--yaml-for-env dev \
--output google/registries/docker
./.venv/bin/terragrunt-generator \
-u https://github.com/terraform-google-modules/terraform-google-cloud-storage.git \
-v v10.0.1 \
-l buckets \
--yaml-output ./ \
--yaml-for-env dev \
--output google/buckets
./.venv/bin/terragrunt-generator \
-u https://github.com/terraform-google-modules/terraform-google-log-export.git \
-v v10.0.0 \
-l log.logexport \
--yaml-output ./ \
--yaml-for-env dev \
--output google/log/logexport
./.venv/bin/terragrunt-generator \
-u https://github.com/terraform-google-modules/terraform-google-log-export.git \
-v v10.0.0 \
-l log.logbucket \
-p modules/logbucket \
--yaml-output ./ \
--yaml-for-env dev \
--output google/log/logbucket
./.venv/bin/terragrunt-generator \
-u https://github.com/terraform-google-modules/terraform-google-kubernetes-engine.git \
-v v36.3.0 \
-l gke.cluster \
-p modules/beta-private-cluster-update-variant \
--yaml-output ./ \
--yaml-for-env dev \
--output google/gke/cluster
./.venv/bin/terragrunt-generator \
-u https://github.com/terraform-google-modules/terraform-google-kubernetes-engine.git \
-v v36.3.0 \
-l gke.workload-identity \
-p modules/workload-identity \
--yaml-output ./ \
--yaml-for-env dev \
--output google/gke/workload-identity
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment