{"id":24484104,"url":"https://github.com/meteorops/terragrunt-gcp-projects","last_synced_at":"2025-07-27T08:03:51.805Z","repository":{"id":225199068,"uuid":"389545298","full_name":"MeteorOps/terragrunt-gcp-projects","owner":"MeteorOps","description":"A Terragrunt boilerplate to minimize regrets on GCP","archived":false,"fork":false,"pushed_at":"2024-04-29T11:51:03.000Z","size":13,"stargazers_count":11,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-20T18:31:48.898Z","etag":null,"topics":["google-cloud","terraform","terragrunt"],"latest_commit_sha":null,"homepage":"https://www.meteorops.com/blog/terraform-starter-boilerplate-for-gcp-using-terragrunt","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MeteorOps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-07-26T07:24:00.000Z","updated_at":"2025-03-30T21:45:47.000Z","dependencies_parsed_at":"2024-02-29T19:31:33.134Z","dependency_job_id":"4e52d795-8108-4ffe-adff-e5fc438154ad","html_url":"https://github.com/MeteorOps/terragrunt-gcp-projects","commit_stats":null,"previous_names":["meteorops/terragrunt-gcp-projects"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MeteorOps/terragrunt-gcp-projects","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeteorOps%2Fterragrunt-gcp-projects","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeteorOps%2Fterragrunt-gcp-projects/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeteorOps%2Fterragrunt-gcp-projects/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeteorOps%2Fterragrunt-gcp-projects/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MeteorOps","download_url":"https://codeload.github.com/MeteorOps/terragrunt-gcp-projects/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeteorOps%2Fterragrunt-gcp-projects/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267327534,"owners_count":24069442,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-27T02:00:11.917Z","response_time":82,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["google-cloud","terraform","terragrunt"],"created_at":"2025-01-21T13:13:40.545Z","updated_at":"2025-07-27T08:03:51.783Z","avatar_url":"https://github.com/MeteorOps.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Example GCP projects infrastructure for Terragrunt\n[![Maintained by meteorops.com](https://img.shields.io/badge/maintained%20by-meteorops.com-27233e)](https://meteorops.com)\n![Terraform Version](https://img.shields.io/badge/tf-%3E%3D0.12.6-blue.svg)\n[![License](https://img.shields.io/badge/license-MIT-green)](./LICENSE)\n\nThis repo, along with the [terraform-gcp-modules](https://github.com/meteorops/terraform-gcp-modules), show an example file/folder structure\nyou can use with [Terragrunt](https://github.com/gruntwork-io/terragrunt) to keep your\n[Terraform](https://www.terraform.io) code DRY. For background information, check out the [Keep your Terraform code\nDRY](https://github.com/gruntwork-io/terragrunt#keep-your-terraform-code-dry) section of the Terragrunt documentation.\n\n## How do you deploy the infrastructure in this repo?\n\n\n### Pre-requisites\n\n1. Install [Terraform](https://www.terraform.io/) version `0.13.0` or newer and\n   [Terragrunt](https://github.com/gruntwork-io/terragrunt) version `v0.25.1` or newer.\n1. Fill in your GCP Project ID in `my-project/project.hcl`.\n1. Make sure gcloud CLI is installed and you are authenticated,otherwise run `gcloud auth login`.\n\n\n### Deploying a single module\n\n1. `cd` into the module's folder (e.g. `cd my-project/us-central1/rnd-1/vpc`).\n1. Run `terragrunt plan` to see the changes you're about to apply.\n1. If the plan looks good, run `terragrunt apply`.\n\n\n### Deploying all modules in an environment\n\n1. `cd` into the environment folder (e.g. `cd my-project/us-central1/rnd-1`).\n1. Run `terragrunt run-all plan` to see all the changes you're about to apply.\n1. If the plan looks good, run `terragrunt run-all apply`.\n\n\n### Testing the infrastructure after it's deployed\n\nAfter each module is finished deploying, it will write a bunch of outputs to the screen. For example, the my-app will\noutput something like the following:\n\n```\nOutputs:\n\nip = \"35.240.219.84\"\n```\n\nA minute or two after the deployment finishes, you should\nbe able to test the `ip` output in your browser or with `curl`:\n\n```\ncurl 35.240.219.84\n\nContact MeteorOps for DevOps \u0026 Cloud Consulting!\n```\n\n### Destroying all modules in an environment\n\n1. `cd` into the environment folder (e.g. `cd my-project/us-central1/rnd-1`).\n1. Run `terragrunt run-all plan -destroy` to see all the destroy changes you're about to apply.\n1. If the plan looks good, run `terragrunt run-all destroy`.\n\n## How is the code in this repo organized?\n\nThe code in this repo uses the following folder hierarchy:\n\n```\nproject\n └ _global\n └ region\n    └ _global\n    └ environment\n       └ resource\n```\n\n## Creating and using root (project) level variables\n\nIn the situation where you have multiple GCP projects or regions, you often have to pass common variables down to each\nof your modules. Rather than copy/pasting the same variables into each `terragrunt.hcl` file, in every region, and in\nevery environment, you can inherit them from the `inputs` defined in the root `terragrunt.hcl` file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeteorops%2Fterragrunt-gcp-projects","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeteorops%2Fterragrunt-gcp-projects","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeteorops%2Fterragrunt-gcp-projects/lists"}