Terramate is a tool for managing multiple Terraform stacks.
The stack concept is not defined by Hashicorp's Terraform tooling but just a convention used by the Terraform community, so a stack can be loosely defined as:
A terraform stack is a runnable terraform module that operates on a subset of
the infrastructure's resource.
It provides ways to keep your code DRY and also manage dependencies between stacks with minimal effort to get started in a non-intrusive way.
- Avoid duplication by easily sharing data across your project.
- Explicitly define order of execution of stacks.
- Code generation ensures that plan/apply is always done with plain Terraform commands.
- Change detection, including for local modules used by stacks.
- Not a wrapper, you keep using Terraform or any other of your tools.
- All done with HCL.
For more details on how this is achieved, please consider:
- Why Stacks ?
- Change Detection
- Config Overview
- Configuring A Project
- Sharing Data
- Code Generation
- Orchestrating Stacks Execution
To install using Go just run:
go install github.com/mineiros-io/terramate/cmd/terramate@<version>
Where <version>
is any terramate version tag,
or you can just install the latest release:
go install github.com/mineiros-io/terramate/cmd/terramate@latest
TODO
If you don't want to install Terramate on your host you can use Docker or Podman to run Terramate inside a container:
docker run ghcr.io/mineiros-io/terramate
Container images tagged with release versions are also provided. Click here for a list of the available container image tags.
Terramate supports autocompletion of commands for bash, zsh and fish. To install the completion just run the command below and open a new shell session:
terramate install-completions
TODO: More details on the basics to setup a project