terramate

package module
v0.11.5-rc1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 18, 2024 License: MPL-2.0 Imports: 2 Imported by: 0

README

Terramate

Terramate


Latest Release Go Docs Go Report Card Terramate CI Status Discord Server

🚀 Getting Started | 📖 Documentation | 💻 Playground



What is Terramate CLI?

Terramate CLI is an open-source Infrastructure as Code (IaC) code generation and orchestration tool for Terraform, OpenTofu and Terragrunt. With Terramate, you can:

(a) Simplify complex codebases to make your work more productive and reliable. Break down large state files with stacks to reduce run-time and blast radius and keep them DRY with native code generation.

(b) Automate and orchestrate Terraform, OpenTofu and Terragrunt in any CI/CD using Pull Request automation, GitOps blueprints, and workflow tooling with zero-config orchestration and change detection.

(c) Provide the foundation to later leverage Terramate Cloud, a management layer that gives you visibility, control, and actionable insights into your infra.

Installation

With brew:

brew install terramate

With Go:

go install github.com/terramate-io/terramate/cmd/...@latest

For other installation methods, please see the documentation.

Getting Started

The fastest way to get started with Terramate is our getting started guide.

Why simplify complex codebases?

As Terraform and OpenTofu offer no standard pattern on how to organize code efficiently, projects quickly sprawl out of control. The consequences are code complexity, long-running pipelines, large blast radius, drift, and poor governance.

Terramate CLI enables a new approach to eliminating the root cause of these consequences: using a modular and efficient approach called Terramate Stacks. A stack is a combination of infrastructure code, state and configuration, which can be nested to split state further.

Organizationally, a stack is a way to establish an ownership model. By consistently sizing stacks into isolated units that your team members can quickly understand, assuming ownership of your infra becomes a lot simpler. Terramate CLI supports Terraform, OpenTofu and Terragrunt, and can be run locally as well as in your existing VCS (Github, Gitlab) CI/CD.

Terramate CLI is designed to work especially well with Terramate Cloud, which provides an IaC management layer and offers a generous free tier.

Features

  • Orchestration: Run any command and configurable workflows in stacks with unlimited concurrency.
  • Change Detection: Only execute stacks that contain changes. Allows to detect changes in referenced Terraform and OpenTofu modules as well as Terragrunt dependencies.
  • Code Generation: Generate code such HCL, JSON and YAML to keep your stacks DRY (Don't repeat yourself). Comes with support for global variables and functions.
  • Automation Blueprints: Pre-configured GitOps workflows for GitHub, GitLab, BitBucket and Atlantis to enable Pull Automation with plan previews in your existing CI/CD.
  • Drift Management: Detect and reconcile drift with scheduled workflows.
  • Observability, Visibility and Insights: Provides actionable insights and observability into your stacks, deployments, and resources.

Terramate Cloud

Terramate Cloud provides you with the best IaC management experience possible. It helps you orchestrate your stacks in your existing CI/CD platform, such as GitHub Actions, GitLab and Bitbucket Pipelines, so you don't need to buy yet another CI/CD vendor.

It also provides a powerful dashboard that adds observability and insights, deployment metrics (e.g., DORA), notifications, drift management, asset management, and more for your stacks to provide the developer experience and infrastructure to build, scale and observe all your infrastructure managed with IaC.

Terramate Cloud Dashboard

Join the Community

Additional Resources

Reporting Bugs, Requesting Features, or Contributing to Terramate

Want to report a bug or request a feature? Open an issue

Interested in contributing to Terramate? Check out our Contribution Guide

License

See the LICENSE file for licensing information.

Terramate

Terramate is a CNCF and Linux Foundation silver member.

CNCF Silver Member logo

Documentation

Overview

Package terramate provides functions for managing terraform stacks. A stack is a unit of independent runnable terraform modules.

Index

Constants

View Source
const (
	// DefaultFilename is the name of the default Terramate configuration file.
	DefaultFilename = "terramate.tm.hcl"

	// SkipFilename is the name of Terramate skip file.
	SkipFilename = ".tmskip"
)

Variables

This section is empty.

Functions

func Version

func Version() string

Version of terramate.

Types

This section is empty.

Directories

Path Synopsis
benchmarks
changed
Package changed contains benchmarks to the change detection system.
Package changed contains benchmarks to the change detection system.
Package ci provides helper functions to detect the CI/CD platform.
Package ci provides helper functions to detect the CI/CD platform.
Package cloud implements a client SDK for communication with the cloud API.
Package cloud implements a client SDK for communication with the cloud API.
deployment
Package deployment provides types and helpers for cloud deployments.
Package deployment provides types and helpers for cloud deployments.
drift
Package drift provides types and helpers for cloud drifts.
Package drift provides types and helpers for cloud drifts.
preview
Package preview contains functionality for the preview feature in Terramate Cloud.
Package preview contains functionality for the preview feature in Terramate Cloud.
stack
Package stack provides types and helpers for cloud stacks.
Package stack provides types and helpers for cloud stacks.
testserver
Package testserver provides fake Terramate Cloud endpoints for testing purposes.
Package testserver provides fake Terramate Cloud endpoints for testing purposes.
testserver/cloudstore
Package cloudstore provides the in-memory store used by the fake Terramate Cloud server.
Package cloudstore provides the in-memory store used by the fake Terramate Cloud server.
testserver/cmd/testserver
Package main implements the cloudmock service.
Package main implements the cloudmock service.
cmd
terramate
Terramate is a tool for managing multiple Terraform stacks.
Terramate is a tool for managing multiple Terraform stacks.
terramate-ls
Terramate-ls is a language server.
Terramate-ls is a language server.
terramate/cli
Package cli provides cli specific functionality.
Package cli provides cli specific functionality.
terramate/cli/cliconfig
Package cliconfig implements the parser and load of Terramate CLI Configuration files (.terramaterc and terramate.rc).
Package cliconfig implements the parser and load of Terramate CLI Configuration files (.terramaterc and terramate.rc).
terramate/cli/clitest
Package clitest provides constants and errors kind reused by the cli implementation and the e2e test infrastructure.
Package clitest provides constants and errors kind reused by the cli implementation and the e2e test infrastructure.
terramate/cli/github
Package github implements a client SDK for the Github API.
Package github implements a client SDK for the Github API.
terramate/cli/gitlab
Package gitlab provides a SDK and helpers for the gitlab provider.
Package gitlab provides a SDK and helpers for the gitlab provider.
terramate/cli/out
Package out provides output functionality, including verboseness level and normal/error messages support.
Package out provides output functionality, including verboseness level and normal/error messages support.
terramate/cli/telemetry
Package telemetry provides types and helpers for CLI telemetry.
Package telemetry provides types and helpers for CLI telemetry.
tgdeps
Package main implements tgdeps.
Package main implements tgdeps.
Package config provides high level Terramate configuration facilities.
Package config provides high level Terramate configuration facilities.
filter
Package filter provides helpers for filtering objects.
Package filter provides helpers for filtering objects.
tag
Package tag provides helpers for dealing with Terramate tags.
Package tag provides helpers for dealing with Terramate tags.
e2etests
cmd/helper
helper is a utility command that implements behaviors that are useful when testing terramate run features in a way that reduces dependencies on the environment to run the tests.
helper is a utility command that implements behaviors that are useful when testing terramate run features in a way that reduces dependencies on the environment to run the tests.
internal/runner
Package runner provides helpers for compiling and running the Terramate binary with the intent of doing e2e tests.
Package runner provides helpers for compiling and running the Terramate binary with the intent of doing e2e tests.
Package errors implements the Terramate standard error type.
Package errors implements the Terramate standard error type.
errlog
Package errlog provides functions to log Terramate errors nicely and in a consistent manner.
Package errlog provides functions to log Terramate errors nicely and in a consistent manner.
verbosity
Package verbosity defines the common Terramate error verbosity levels.
Package verbosity defines the common Terramate error verbosity levels.
Package event implements a simple event stream and defines all events generated by different parts of Terramate.
Package event implements a simple event stream and defines all events generated by different parts of Terramate.
Package fs provides filesystem related functionality.
Package fs provides filesystem related functionality.
Package generate implements code generation.
Package generate implements code generation.
genfile
Package genfile implements generate_file code generation.
Package genfile implements generate_file code generation.
genhcl
Package genhcl implements generate_hcl code generation.
Package genhcl implements generate_hcl code generation.
sharing
Package sharing implements the loading of sharing related blocks.
Package sharing implements the loading of sharing related blocks.
Package git provides a wrapper for the git command line program.
Package git provides a wrapper for the git command line program.
Package globals provides functions for loading globals.
Package globals provides functions for loading globals.
hcl
Package hcl provides parsing functionality for Terramate HCL configuration.
Package hcl provides parsing functionality for Terramate HCL configuration.
ast
Package ast provides low level parsing facilities for HCL configuration.
Package ast provides low level parsing facilities for HCL configuration.
eval
Package eval provides both full and partial evaluation of HCL.
Package eval provides both full and partial evaluation of HCL.
fmt
Package fmt contains functions for formatting hcl config.
Package fmt contains functions for formatting hcl config.
info
Package info provides informational types related to hcl.
Package info provides informational types related to hcl.
Package lets provides parsing and evaluation of lets blocks.
Package lets provides parsing and evaluation of lets blocks.
Package tmls implements a Terramate Language Server (LSP).
Package tmls implements a Terramate Language Server (LSP).
Package mapexpr implements the `map` block as an HCL expression type.
Package mapexpr implements the `map` block as an HCL expression type.
test
Package test implements testcases and test helpers for dealing with map blocks.
Package test implements testcases and test helpers for dealing with map blocks.
Package modvendor provides basic functions and types to support Terraform module vendoring.
Package modvendor provides basic functions and types to support Terraform module vendoring.
download
Package download is responsible for downloading vendored modules.
Package download is responsible for downloading vendored modules.
manifest
Package manifest implements vendor manifest parsing.
Package manifest implements vendor manifest parsing.
Package printer defines funtionality for "printing" text to an io.Writer e.g.
Package printer defines funtionality for "printing" text to an io.Writer e.g.
Package project defines concepts that are related to a Terramate project.
Package project defines concepts that are related to a Terramate project.
run
Package run provides facilities to run commands inside Terramate context and ordering.
Package run provides facilities to run commands inside Terramate context and ordering.
dag
Package dag provides the Directed-Acyclic-Graph (DAG) primitives required by Terramate.
Package dag provides the Directed-Acyclic-Graph (DAG) primitives required by Terramate.
Package safeguard provides types and methods for dealing with safeguards keywords.
Package safeguard provides types and methods for dealing with safeguards keywords.
Package scheduler defines schedulers to execute functions on DAGs based on a specific scheduling strategy.
Package scheduler defines schedulers to execute functions on DAGs based on a specific scheduling strategy.
resource
Package resource defines different concurrent access strategies for resources.
Package resource defines different concurrent access strategies for resources.
Package stack defines all functionality around stacks, like loading, listing all stacks, etc.
Package stack defines all functionality around stacks, like loading, listing all stacks, etc.
trigger
Package trigger provides functionality that help manipulate stacks triggers.
Package trigger provides functionality that help manipulate stacks triggers.
Package stdlib implements the Terramate language functions.
Package stdlib implements the Terramate language functions.
Package strconv provides helper functions for the Go standard strconv package.
Package strconv provides helper functions for the Go standard strconv package.
Package test provides testing routines reused throughout terramate code base.
Package test provides testing routines reused throughout terramate code base.
cloud
Package cloud provides testing helpers for the TMC cloud.
Package cloud provides testing helpers for the TMC cloud.
errors
Package errors provides useful assert functions for handling errors on tests
Package errors provides useful assert functions for handling errors on tests
hclutils
Package hclutils provides test utils related to hcl.
Package hclutils provides test utils related to hcl.
hclutils/info
Package info provides functions useful to create types like info.Range
Package info provides functions useful to create types like info.Range
hclwrite
Package hclwrite aims to provide some facilities making it easier/safer to generate HCL code for testing purposes.
Package hclwrite aims to provide some facilities making it easier/safer to generate HCL code for testing purposes.
hclwrite/hclutils
Package hclutils provides useful functions to build HCL documents.
Package hclutils provides useful functions to build HCL documents.
ls
Package ls provides test utilities used when testing the Terramate Language Server.
Package ls provides test utilities used when testing the Terramate Language Server.
sandbox
Package sandbox provides an easy way to setup isolated terramate projects that can be used on testing, acting like sandboxes.
Package sandbox provides an easy way to setup isolated terramate projects that can be used on testing, acting like sandboxes.
Package tf provides parsing and abstractions specific to Terraform.
Package tf provides parsing and abstractions specific to Terraform.
Package tg implements functions to deal with Terragrunt files.
Package tg implements functions to deal with Terragrunt files.
Package versions provide helper functions for version constraint matching.
Package versions provide helper functions for version constraint matching.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL