All Projects → mineiros-io → terramate

mineiros-io / terramate

Licence: Apache-2.0 license
Terramate is a tool for managing multiple Terraform stacks that comes with support for change detection and code generation.

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to terramate

terraform-aws-cognito-user-pool
A Terraform module to create and manage Cognito User Pools (Simple and Secure User Sign-Up, Sign-In, and Access Control) on Amazon Web Services (AWS). https://aws.amazon.com/cognito
Stars: ✭ 46 (-83.03%)
Mutual labels:  iac, mineiros
terraform-aws-s3-bucket
A Terraform module to create a Simple Storage Service (S3) Bucket on Amazon Web Services (AWS). https://aws.amazon.com/s3/
Stars: ✭ 47 (-82.66%)
Mutual labels:  iac, mineiros
terraform-aws-iam-user
A Terraform module to create and manage Identity and Access Management (IAM) Users on Amazon Web Services (AWS). https://aws.amazon.com/iam
Stars: ✭ 17 (-93.73%)
Mutual labels:  iac, mineiros
terraform-github-organization
A Terraform module to manage GitHub Organizations. https://github.com/
Stars: ✭ 53 (-80.44%)
Mutual labels:  iac, mineiros
terraform-aws-lambda-function
A Terraform module for deploying and managing Lambda functions on Amazon Web Services (AWS). https://aws.amazon.com/lambda/
Stars: ✭ 37 (-86.35%)
Mutual labels:  iac, mineiros
terraform-aws-route53
A Terraform module to create a Route53 Domain Name System (DNS) on Amazon Web Services (AWS). https://aws.amazon.com/route53/
Stars: ✭ 39 (-85.61%)
Mutual labels:  iac, mineiros
eks-cluster
Quickly spin up an AWS EKS Kubernetes cluster using AWS CloudFormation
Stars: ✭ 41 (-84.87%)
Mutual labels:  iac
terraform-modules
Terraform Modules by Peak
Stars: ✭ 16 (-94.1%)
Mutual labels:  iac
sixarm mac setup
SixArm.com » Mac » Setup notes for new Mac computer and macOS
Stars: ✭ 57 (-78.97%)
Mutual labels:  iac
vspheretools
vSphereTools is a set of scripts from DevOpsHQ to support working with vSphere and virtual machines (VMs) on it, which are based on the pysphere library.
Stars: ✭ 19 (-92.99%)
Mutual labels:  iac
Disruption
Terraform script to deploy AD-based environment on Azure
Stars: ✭ 34 (-87.45%)
Mutual labels:  iac
awesome-iac-testing
A list of awesome IaC testing articles, speeches & links. Especially about Ansible.
Stars: ✭ 56 (-79.34%)
Mutual labels:  iac
tfu
tfu is a terraform helper to update the providers.
Stars: ✭ 13 (-95.2%)
Mutual labels:  iac
driftctl
Detect, track and alert on infrastructure drift
Stars: ✭ 2,020 (+645.39%)
Mutual labels:  iac
prancer-compliance-test
This repository includes cloud security policies for IaC and live resources.
Stars: ✭ 32 (-88.19%)
Mutual labels:  iac
maturity-models
Maturity models for IT, Agile, DevOps, TOGAF, Six Sigma, P3M3, etc.
Stars: ✭ 157 (-42.07%)
Mutual labels:  iac
icp-ce-on-linux-containers
Multi node IBM Cloud Private Community Edition 3.2.x w/ Kubernetes 1.13.5 in a Box. Terraform, Packer and BASH based Infrastructure as Code script sets up a multi node LXD cluster, installs ICP-CE and clis on a metal or VM Ubuntu 18.04 host.
Stars: ✭ 52 (-80.81%)
Mutual labels:  iac
awesome-devops
No description or website provided.
Stars: ✭ 37 (-86.35%)
Mutual labels:  iac
headless-wordpress
Headless Wordpress - AWS - Easy Setup
Stars: ✭ 42 (-84.5%)
Mutual labels:  iac
terraform-provider-checkly
Terraform provider for the Checkly monitoring service
Stars: ✭ 37 (-86.35%)
Mutual labels:  iac

Mineiros

GoDoc CI Status Go Report Card codecov Join Slack

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 stack is a runnable Terraform Root Module that operates on a subset of the infrastructure's resources and has its own state.

Terramate provides ways to keep your Terraform code DRY and allows to define relationships between stacks and supports you to orchestrate Terraform commands in those stacks with minimal effort to get started in a non-intrusive way.

  • Keep you code DRY: Avoid duplication by easily sharing data across your project.
  • Code Generation: Generate valid Terraform Code to ensure that you can always enter a stack to run plain Terraform commands.
  • Stack Change detection: Only execute commands in stacks that have been changed in the current branch or since the last merge.
  • Module Change detection: Enhanced Change Detection allows to identifying stacks that have changes in local modules.
  • Execute Any Command: Terramate is not a wrapper of Terraform but can execute any commands in (changed) stacks.
  • Execution Order: Explicitly define an order of execution of stacks.
  • Forced Stack Execution: Ensure specific stacks are run alongside other stacks.
  • Pure HCL: All configuration of Terramate can be supplied in the well-known Hashicorp Configuraltion Language (HCL).

For more details on how this is achieved, please consider:

If you're interested to know why we decided to build Terramate please consider our blog post: Introducing Terramate — An Orchestrator and Code Generator for Terraform.

Getting Started

Installing

Using Go

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

Using a package manager

  • macOS: You can install Terramate on macOS using Homebrew: brew install terramate

Using Release Binaries

To install Terramate using a release binary, find the appropriate package for your system and download it.

After downloading Terramate, unzip the package. Terramate runs as a single binary named terramate. Any other files in the package can be safely removed and Terramate will still function.

Finally, make sure that the terramate binary is available on your PATH. This process will differ depending on your operating system.

Using Docker

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.

Auto Completion

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

Project Setup

If you already have a project versioned on Git setting up Terramate is as easy as just installing Terramate. Terramate comes with sensible defaults so just using it inside a pre existent Git repository should not require any configurations.

The exception being repositories that have a default remote branch other than origin/main, in that case to make change detection work you will need to set a customized project configuration.

If you want to play around with Terramate from scratch locally you can also setup a local git repository:

playground=$(mktemp -d)
local_origin=$(mktemp -d)

git init -b main "${playground}"
git init -b main "${local_origin}"  --bare

cd "${playground}"
git remote add origin "${local_origin}"

echo "My Terramate Playground" > README.md

git add README.md
git commit -m "first commit"
git push --set-upstream origin main

# Start using terramate

Terramate can also work without any VCS setup, it will only require a Terramate configuration at the top level directory of the project

playground=$(mktemp -d)
cd "${playground}"

cat > terramate.tm.hcl <<- EOM
terramate {
  config {
  }
}
EOM

# Start using terramate

In a setup with no VCS change detection features will not be available.

You can also check our live example.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].