https://github.com/cisco-open/stacks
Stacks, the Terraform code pre-processor
https://github.com/cisco-open/stacks
terraform
Last synced: 6 days ago
JSON representation
Stacks, the Terraform code pre-processor
- Host: GitHub
- URL: https://github.com/cisco-open/stacks
- Owner: cisco-open
- License: apache-2.0
- Created: 2023-03-15T20:40:01.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-04-01T13:15:58.000Z (14 days ago)
- Last Synced: 2025-04-02T04:05:12.940Z (14 days ago)
- Topics: terraform
- Language: Python
- Homepage:
- Size: 250 KB
- Stars: 178
- Watchers: 5
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
- awesome-tf - stacks - Stacks, the Terraform code pre-processor (Tools / Community providers)
- jimsghstars - cisco-open/stacks - Stacks, the Terraform code pre-processor (Python)
README
## What is Stacks?
**Stacks** is a [Terraform](https://www.terraform.io/) code pre-processor.
Its primary goal is to minimize your total Terraform codebase without giving up on coverage. To do more with less.As a code pre-processor, Stacks receives your "input code" and returns "output code" for Terraform to consume.
Stacks was originally developed and continues to be maintained by the Infrastructure SRE team at [Cisco ThousandEyes](https://www.thousandeyes.com/).
It was initially presented and open-sourced at [SREcon23 Americas](https://www.usenix.org/conference/srecon23americas/presentation/bejarano).You can read "Terraform" and "OpenTofu" interchangeably, Stacks works with both but we've chosen to go with "Terraform" for readability.
The ["I am starting from scratch" quick-start guide](<2.2. I am starting from scratch.md>) is a good introduction to Stacks and what it does.
## Documentation
1. About
1. [Considerations before using]()
2. [Stacks vs. its alternatives]()2. Quick-start guide
1. [Installation instructions]()
2. [I am starting from scratch]()
3. [I am collaborating to an existing stack]()
4. [I am collaborating to Stacks itself]()3. Reference
1. Native features
1. [Global Terraform code]()
2. [Reusable root modules]()
3. [Jinja templating for Terraform]()
4. [Jinja templating for variables]()
5. [Custom Jinja functions]()
6. [Inline secret encryption]()
7. [Automatic variable initialization]()
2. Features you can build with Stacks
1. [Terraform state backend configuration]()
2. [Terraform provider generation]()
3. [Input validation]()
3. Command-line interface
1. [`stacks render`]()
2. [`stacks terraform`]()
3. [`stacks diff`]()
4. [`stacks encrypt`]()
5. [`stacks decrypt`]()
6. [`stacks surgery list`]()
7. [`stacks surgery import`]()
8. [`stacks surgery remove`]()
9. [`stacks surgery rename`]()
10. [`stacks surgery move`]()
11. [`stacks surgery edit`]()
12. [`stacks version`]()
4. [Directory structure]()
5. [Special variables]()