{"id":39470353,"url":"https://github.com/atorrescogollo/terraform-cascade","last_synced_at":"2026-01-18T04:54:01.049Z","repository":{"id":183119227,"uuid":"669211032","full_name":"atorrescogollo/terraform-cascade","owner":"atorrescogollo","description":"Terraform Cascade - An opinionated terraform project orchestrator","archived":false,"fork":false,"pushed_at":"2025-05-10T07:25:33.000Z","size":721,"stargazers_count":1,"open_issues_count":9,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-10T08:26:53.623Z","etag":null,"topics":["cli","go","infrastructure-as-code","terraform"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atorrescogollo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2023-07-21T16:03:33.000Z","updated_at":"2024-04-18T09:42:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"55f2e634-d2b0-4921-8113-467fe2fd81e3","html_url":"https://github.com/atorrescogollo/terraform-cascade","commit_stats":null,"previous_names":["atorrescogollo/terraform-cascade"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/atorrescogollo/terraform-cascade","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atorrescogollo%2Fterraform-cascade","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atorrescogollo%2Fterraform-cascade/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atorrescogollo%2Fterraform-cascade/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atorrescogollo%2Fterraform-cascade/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atorrescogollo","download_url":"https://codeload.github.com/atorrescogollo/terraform-cascade/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atorrescogollo%2Fterraform-cascade/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28530465,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"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":["cli","go","infrastructure-as-code","terraform"],"created_at":"2026-01-18T04:54:00.975Z","updated_at":"2026-01-18T04:54:01.035Z","avatar_url":"https://github.com/atorrescogollo.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Terraform Cascade\n\u003cimg src=\"./assets/gopher.png\" height=\"200\"\u003e\n\n## Demo\n[![asciicast](https://asciinema.org/a/JPYlivXxoZvB5PvjNvOxVQb7O.svg)](https://asciinema.org/a/JPYlivXxoZvB5PvjNvOxVQb7O)\n\n# Overview\n**Terraform Cascade** is a terraform-like tool that allows you to manage multiple terraform projects.\n\nIt's made to be fully compatible with terraform, so you can use it as a drop-in replacement. However, it requires the **terraform binary to be available in the PATH**.\n\n# Design\nIt works with a very opinionated design:\n* Every project is inside a deep directory structure.\n* To define a project, you only need to place a `backend.tf` file in that directory.\n* In each layer, will be executed in the following order:\n    1. **Current directory** (only when it has a `backend.tf` file)\n    2. **Whole `base` directory** (with its layer)\n    3. **Other directories** (with its layer)\n\n\n# Usage\n\n### Build\n```\ndocker build -t cascade .\n```\n\n### Run example\n```\ncd samples/basic/ # Some sample project that has dependencies between layers\n```\n\n```\n# Full dependency tree in order\ndocker run -it --rm -v $(pwd):/w -v $(pwd)/tmp:/tmp -w /w cascade init --cascade-recursive\ndocker run -it --rm -v $(pwd):/w -v $(pwd)/tmp:/tmp -w /w cascade apply --cascade-recursive --auto-approve\n```\n\n```\n# Full dependency tree in parallel\ndocker run -it --rm -v $(pwd):/w -v $(pwd)/tmp:/tmp -w /w/dev cascade apply --cascade-recursive --auto-approve\n```\n\n\n\n### Generated infra\n```\n$ tree -a -I .terraform tmp/cascade\ntmp/cascade\n├── dev\n│   ├── .account\n│   ├── s3\n│   │   └── .s3\n│   └── vpc\n│       ├── .vpc\n│       └── eks\n│           └── .eks\n├── ops\n│   ├── .account\n│   └── vpc\n│       └── .vpc\n└── prod\n    ├── .account\n    └── vpc\n        ├── .vpc\n        └── eks\n            └── .eks\n```\n\n### Generated terraform states\n```\n$ tree -a tmp/cascade/.terraform/\ntmp/cascade/.terraform/\n├── base.tfstate\n├── dev_base.tfstate\n├── dev_eks.tfstate\n├── ops_base.tfstate\n├── prod_base.tfstate\n└── prod_eks.tfstate\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatorrescogollo%2Fterraform-cascade","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatorrescogollo%2Fterraform-cascade","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatorrescogollo%2Fterraform-cascade/lists"}