An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

        



Stacks for Terraform


The Terraform code pre-processor


## 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]()