Awesome Terraform Awesome

A curated list of resources on HashiCorp's Terraform. Your contributions are welcome!

Terraform enables you to safely and predictably create, change, and improve production infrastructure. It is an open source tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.

Contents

Legend

  • Not compatible with terraform >= 0.12 👻
  • Abandoned 💀
  • Monetized 💲

Official Resources

Community

Books

Tutorials and Blog Posts

Beginner Guides

Writing Custom Providers

How-To

Multi-Environment Configuration

Azure

AWS

Google Cloud

Miscellaneous

Community Modules

For more Community Modules not listed here please see the Terraform Module Registry.

Self-Hosted Registries

  • anthology - Private Terraform registry implementation as an alternative to the official registry.
  • boring-registry - Private Terraform Module/Provider Registry with API key authentication and blob storage support
  • citizen - Private Terraform Module/Provider Registry
  • nrkno/terraform-registry - A private Terraform registry with modular store backends.
  • petra - Private Terraform Registry Manager
  • philips-labs/terraform-registry - Terraform registry to serve arbitrary Terraform provider releases hosted on Github
  • tapir - Private Terraform Registry.
  • terraform-simple-registry - Simple implementation of the Terraform registry protocols.
  • Terrareg - Terraform module registry.
  • terustry - Open Source terraform provider registry acting as a proxy for gitlab or github releases.
  • terralist - Terraform Private Registry for modules and providers manageable from a REST API.

Managed Registries

  • cloudsmith - Managed package hoster for internal and external clients. 💲

Providers

Hashicorp supported providers

Vendor supported providers

Community providers

Testing

  • clarity - A declarative test framework for Terraform for unit testing.
  • kitchen-terraform - Provides a set of Test Kitchen plugins which enable a system to use Test Kitchen to converge a Terraform configuration and verify the resulting Terraform state with InSpec controls.
  • rspec-terraform - RSpec tests for your Terraform modules.
  • terraform_validate - Assists in the enforcement of user-defined standards in Terraform. 💀
  • terraform-compliance - BDD Testing for Terraform Files.
  • terratest - Terratest is a Go library that makes it easier to write automated tests for your infrastructure code.

Tools

  • AIaC - Artificial Intelligence Infrastructure-as-Code Generator
  • AirIAM - AirIAM is a tool for AWS IAM to least privilege Terraform execution framework.
  • Argonaut - Deploy apps and infrastructure on your cloud in minutes. Autogenerate Terraform modules, customize configurations through PRs. Support for app deployments on Kubernetes and Lambda environments.
  • asdf - HashiCorp plugin for the asdf version manager
  • astro - Astro is a tool for managing multiple Terraform executions as a single command. 👻
  • atlantis - Unified workflow for collaborating on Terraform through GitHub.
  • atmos - A universal tool that converts deep merged YAML to module inputs. 👽
  • aws2tf - automates the importing of existing AWS resources into Terraform and outputs the Terraform HCL code.
  • aztfexport - A tool to bring existing Azure resources under Terraform's management.
  • balcony - CLI tool for easy AWS API reads. Also generates Terraform import-blocks, and actual Terraform Resource code.
  • blast radius - Interactive visualizations of Terraform dependency graphs. 💀
  • burrito - Burrito is a TACoS (Terraform Automation Collaboration Software) Kubernetes Operator.
  • cfnctl - Cfnctl brings the Terraform cli experience to AWS Cloudformation.
  • Checkov - Terraform static analysis tool for terraform>=0.12
  • Coder - Coder provisions software development environments on your infrastructure via Terraform.
  • cf-terraforming A command line utility to facilitate terraforming your existing Cloudflare resources.
  • coretech/terrafile - Systematically manage external modules from Github for use in Terraform (written in Go). 💀
  • driftctl - Detect, track, and alert on infrastructure drift 💀
  • dxw/terrafile - Systematically manage external modules from Github for use in Terraform (written in Ruby).
  • flora - Terraform version manager.
  • fogg - A tool for eliminating toil in managing terraform repositories.
  • former2 - Generate terraform configuration from your existing resources within your AWS account.
  • fuzzy-terraform-rm - A fuzzy-finder command-line tool for removing resources from terraform state.
  • gaia - Gaia is a Terraform 🌍 UI for your modules, and self-service infrastructure 👨‍💻. 💀
  • hatchet - An all-in-one Terraform management tool. 💀
  • hcldump - Dump the HCL (v2) abstract syntax tree.
  • hcledit - A command line editor for HCL.
  • hclgrep - Syntax based grep for HCL(v2).
  • iam-policy-json-to-terraform - Small tool to convert an IAM Policy in JSON format into a Terraform aws_iam_policy_document
  • Infracost - Cloud cost estimates for Terraform in your CLI and pull requests.
  • inframap - Read your tfstate or HCL to generate a graph specific for each provider, showing only the resources that are most important/relevant.
  • json2hcl - Convert JSON to HCL and vice versa. 👻
  • k2tf - Kubernetes YAML to Terraform HCL converter.
  • KICS - Scans IaC projects for security vulnerabilities, compliance issues, and infrastructure misconfiguration. Currently working with Terraform projects, Kubernetes manifests, Dockerfiles, AWS CloudFormation Templates, and Ansible playbooks.
  • layerform - Layerform helps engineers create reusable environment stacks using plain .tf files. Ideal for multiple "staging" environments. 💀
  • library.tf - Library.tf is built and designed to not just provide you with all of the registry information for Terraform and OpenTofu but to provide all of the insights you need to make decisions. Quickly find modules or providers that are supported and maintained and not full of bugs.
  • modules.tf-lambda - Infrastructure as code generator from visual diagrams created with Cloudcraft.co to Terraform.
  • para - The missing 3rd-party plugin manager and a "Swiss army knife" for Terraform/Terragrunt - just 1 tool to facilitate all workflows. 💀
  • pike - Pike calculates the permissions or IAM policy required to build your Terraform.
  • pluralith - Terraform state visualization and automated generation of infrastructure documentation. 💲
  • pre-commit-terraform - pre-commit git hooks to take care of Terraform configurations (auto-format, validate, update docs).
  • pretf - drop-in Terraform wrapper that generates Terraform configuration with Python. See pretf documentation 💀
  • prettyplan - Prettyplan (available online here) is a small tool to help you view large Terraform plans with ease. 👻
  • prettyplan for TF 0.12+ - Prettyplan for TF 0.12+ (available online here) is a small tool to help you view large Terraform plans with ease. 👻
  • pug - The terminal user interface for terraform power users.
  • pytest-terraform - pytest terraform plugin with fixtures and offline replay support.
  • python-terrafile - Systematically manage external modules from Github for use in Terraform.
  • regula - Evaluates Terraform infrastructure-as-code for potential AWS, Azure, and Google Cloud security misconfigurations and compliance violations prior to deployment.
  • renovate-config - Sharable Config Presets for Renovatebot, especially useful for DevOps folks.
  • rover - Interactive Terraform state and configuration explorer.
  • ruby-terraform - Simple Ruby wrapper for invoking terraform commands.
  • sato - Sato helps you convert your legacy Cloudformation into Terraform.
  • scenery - Another Terraform plan output prettifier. 👻 💀
  • scratchrelaxtv - Simple Python tool to help with module development - extract vars from main.tf to generate variables.tf and make module usage stub from variables.tf.
  • serverless.tf - Doing serverless with Terraform - serverless.tf is an opinionated open-source framework for developing, building, deploying, and securing serverless applications and infrastructures on AWS using Terraform. Read more.
  • Shisho - Lightweight static analyzer for Terraform.
  • stacks - Stacks, the Terraform code pre-processor
  • Styra Declarative Authorization Service (DAS) - Provides a managed Open Policy Agent (OPA) platform for Application and Infrastructure use cases, including Terraform, Terraform Cloud, and Kubernetes. Enforce policy guardrails during development, in CI/CD pipelines, and at deploy time. Styra DAS Free provides multiple systems and users, policy impact analysis, decision logging and replay, and access to Styra's Terraform policy library.
  • tads-boilerplate - The power of Ansible and Terraform + the simplicity of Docker Swarm = Infrastructure as Code and DevOps best practices.
  • tau - Tau is a thin wrapper on top of terraform to manage multiple deployments, dependencies, and secrets. 💀
  • terraboard - Web dashboard to inspect Terraform States.
  • terraboot - DSL to generate a terraform configuration and run it.
  • terracognita - Reads from existing Cloud Providers (reverse Terraform) and generates your infrastructure as code on Terraform configuration.
  • terracost - Cloud cost estimation for Terraform in your CLI.
  • terracove - Recursively test a directory tree for Terraform diffs and coverage.
  • TerraDepot Terraform state repository, based on the default http remote backend. Allows the central administration of tfstates on AWS S3.
  • terradozer - Terraform destroy without configuration files.
  • terraeasy - Easy Terraform wrapper
  • terraform-aws-clickops-notifier - Get notified when actions are taken in the AWS Console.
  • terraform-bundle - Easily builds bundles containing a Terraform binary as well as provider binaries. Useful for CI and air-gapped Terraform Enterprise.
  • terraform-cdk - CDK (Cloud Development Kit) for Terraform allows developers to use familiar programming languages to define cloud infrastructure and provision it through HashiCorp Terraform.
  • terraform-cleaner - Tiny utility which detects unused variables in your terraform modules.
  • terraform-credentials-vault - A Terraform "credentials helper" plugin that allows providing credentials for Terraform-native services (private module registries, Terraform Cloud, etc) via environment variables.
  • terraform-diff - Always know where you need to run Terraform plan & apply!
  • terraform-docs - Quick utility to generate docs from terraform modules.
  • terraform-graph-beautifier - Command line tool allowing to convert the barely usable output of the terraform graph command to something more meaningful and explanatory.
  • terraform-iam-policy-validator - CLI validates AWS IAM Policies in a Terraform template against AWS IAM best practices.
  • terraform-landscape - (only 0.11 and earlier) Improve Terraform's plan output to be easier to read and understand.
  • terraform-operator - A Kubernetes CRD to handle Terraform operations.
  • terraform-plan-parser - Command line utility and JavaScript API for parsing stdout from terraform plan and converting it to JSON. 👻
  • terraform-provisioner - Tool for managing multiple provisions of the same Terraform scripts.
  • terraform-rake-tasks - Shared Rake tasks for managing terraform plans.
  • terraform-repl - A terraform console wrapper for a better interactive console experience.
  • Terraform-Visual - A simple but powerful tool to visualize Terraform plan.
  • terraform.py - Ansible dynamic inventory script for parsing Terraform state files. 💀
  • terraformer - CLI tool to generate terraform files from existing infrastructure. Infrastructure to Code. Supported many providers.
  • terraforming - Export existing AWS resources to Terraform style (tf, tfstate). Similar to terraformer. 💀
  • terraformize - Apply\Destroy Terraform modules via a simple REST API endpoint. 💀
  • terraformsh - A wrapper in Bash for easier CLI UX and DRY hierarchical configs
  • terragrunt-atlantis-config - Generate Atlantis config for Terragrunt projects.
  • terragrunt - Terragrunt is a thin wrapper for Terraform that provides extra tools for keeping your Terraform configurations DRY, working with multiple Terraform modules, and managing remote state.
  • tenv - OpenTofu/Terraform/Terragrunt version manager.
  • Terrahaxs - A GitOps Terraform CI/CD GitHub Application 💲
  • terrahelp - Command line utility aimed at providing supplementary functionality which can sometimes prove useful when working with Terraform.
  • terrahub - TerraHub is terraform automation and orchestration tool. Seamlessly integrated into console.terrahub.io, enterprise friendly GUI to show realtime terraform executions, as well as auditing and reporting capabilities for historical terraform runs. 💲
  • terramagic - Wizard tool for create folders and terraform files automated, written in Python !
  • terramate - Tool for managing multiple Terraform stacks that comes with support for change detection and code generation
  • terrap-cli - Terrap - a powerful CLI tool that scans your infrastructure and identifies any required changes.
  • terrars - Terrars is a tool for building Terraform stacks in Rust. This is an alternative to the CDK.
  • terrascan - Collection of security and best practice test for static code analysis of terraform templates
  • terrascope - Build orchestrator for terraform monorepos.
  • terrashine - Terrashine is a terraform provider mirror1 implementation that works by automatically caching dependencies as providers are requested.
  • terraspace - The Terraform Framework
  • terrastate - Visual Studio Code extension to monitor/deploy/destroy Terraform resources in your workspace
  • terratag - Terratag is a CLI tool that enables users of Terraform to automatically create and maintain tags across their entire set of AWS, Azure, and GCP resources.
  • tf-init-booster - A Pre-terraform routine that speedups terraform modules download for bulky blueprints.
  • tf-profile - Profiler for Terraform runs. Generate global stats, resource-level stats or visualizations.
  • tf-summarize - A command-line utility to print the summary of the terraform plan
  • tfaction - GitHub Actions collection for Opinionated Terraform Workflow
  • tfautomv - Generate Terraform moved blocks automatically for painless refactoring
  • tfcmt - CLI to notify the result of plan and apply as Pull Request comment.
  • tfedit - A refactoring tool for Terraform.
  • tfenv - Terraform version manager inspired by rbenv.
  • tfgen - Terraform code generator for consistent codebase and DRY.
  • tfgpt - A CLI tool that integrates Terraform with OpenAI's GPT-3.5 Turbo to provide explanations for Terraform commands and concepts.
  • tfjson - Utility to read in a Terraform plan file and dump it out in JSON. 💀
  • tflint - Terraform linter for detecting errors that can not be detected by terraform plan
  • tfmake - Automating Terraform with the power of make.
  • tfmask - Terraform utility to mask select output from terraform plan and terraform apply
  • tfmigrate - A Terraform state migration tool for GitOps.
  • tfmigrator - Go library and CLI to migrate Terraform Configuration and State
  • tfprovidercheck - CLI to prevent malicious Terraform Providers from being executed
  • tfproviderlint - Terraform Provider Lint Tool.
  • tfrepl - A Terraform REPL, giving you a full shell experience. Readline based. No dependencies. Save config changes. History.
  • tfreveal - A Terraform utility to show Terraform plans with all the secret (sensitive) values revealed.
  • tfscaffold - Framework for controlling multi-environment multi-component terraform-managed AWS infrastructure.
  • tfschema - Schema inspector for Terraform providers.
  • tfsec - Terraform static analysis tool that supports terraform <0.12 & >=0.12 & directly integrates with HCL parser for better results.
  • tfsort - CLI utility to sort Terraform variables and outputs.
  • tftarget - CLI Tool to do terraform xxx -target={...} interactively.
  • tftree - Display your Terraform module call stack in your terminal.
  • tftui - A textual user interface for Terraform state.
  • tfupdate - Update version constraints in your Terraform configurations.
  • tfvar - tfvar scans your Terraform configurations or modules and extracts the variables into formats of your choice (tfvar, environment variables, etc.) for editing.
  • tfvaultenv - tfvaultenv reads secrets from HashiCorp Vault and outputs environment variables for various Terraform providers with those secrets.
  • tfwrapper - Rubygem providing rake tasks for running Hashicorp Terraform sanely.
  • tgf - Terragrunt frontend for executing Terragrunt/Terraform through Docker.
  • tofuenv - OpenTofu version manager inspired by tfenv
  • tpm - A package manager for Terraform providers.
  • travelgrunt - cd inside [mono]repos without fatigue!
  • validIaC - ValidIaC combines the best open-source tools to help ensure Terraform best practices, hygiene & security.
  • xterrafile Systematically manage external modules from the module registry, git, or local directories for use in Terraform (written in Go). 💀
  • yor - Automatically tag and trace infrastructure as code frameworks (Terraform, Cloudformation, and Serverless).
  • Speakeasy - Generate a terraform provider from an OpenAPI specification.

CI

  • setup-terraform - Sets up Terraform CLI in your GitHub Actions workflow.
  • terraform-plan - GitHub Action to run Terraform plan and add a comment with the changes.

IDE

  • vscode-terraform-live-graph - Terraform Live Graph Extension for Visual Studio Code is a plugin that allows you to generate a live Terraform graph as you code.

Libraries

Boilerplates

  • Terraform Generator - Scaffolding for a new terraform module or project with support of test frameworks (terratest and kitchen-terraform)
  • Terraform GitOps Framework - Everything you need to build reliable automation for AKS, EKS, and GKE Kubernetes clusters in one free and open-source framework.

Self-hosted Terraform Platforms

  • Lynx - Fast, Secure and Reliable Terraform Backend. It has a user-friendly dashboard, project and environment management, state versioning, locking and snapshots support.
  • OTF - Open Terraforming Framework, an open source alternative to Terraform Enterprise with full Terraform CLI integration. 💀
  • Terrakube - Open Source alternative to Terraform Enterprise with private registry, remote state, custom flows, scheduled workspaces, and visual states.
  • Digger - Open Source Alternative to Terraform Cloud - Run Terraform plan & apply jobs in your CI.
  • cloud-concierge - Open Source, codify unmanaged resources as Terraform, detect drift, and cloud cost and security analysis, delivered as a Pull Request.
  • Stack-Lifecycle-Deployment - OpenSource solution that defines and manages the complete lifecycle of resources used and provisioned into a cloud.
  • Burrito - TACoS Kubernetes Operator - "ArgoCD for Terraform"
  • Terrateam - Open-source alternative to Terraform Cloud/Enterprise, GitOps-first with native GitHub integration and designed for scale, security, and reliability.

Managed Terraform Platforms 💲

  • ControlMonkey - Alternative to Terraform Cloud with Terraform/OpenTofu code generation, cloud inventory and IaC coverage. Includes out-of-the-box policies, drift remediation, and a ClickOps activity scanner. 💲
  • Firefly - Alternative to Terraform Cloud by leveraging your CI tool. Firefly platform also scans your cloud to asses the IaC coverage & drift detection. 💲
  • Scalr - Alternative to Terraform Enterprise with OPA integration, organizational structure, custom hooks, native integrations with other DevOps platforms, and centralized reporting. 💲
  • env0 - Alternative to Terraform Cloud/Enterprise with OPA integration, custom flows and Terragrunt support 💲
  • Brainboard - Visually Design, Deploy & Manage modern cloud infrastructures starting from any Cloud Provider - AWS, GCP, Azure 💲
  • Spacelift - Alternative to Terraform Cloud/Enterprise. Collaborative Infrastructure Delivery Platform for Terraform 💲

Terraform Enterprise Tooling

Videos

Editor Plugins

License

CC0

To the extent possible under law, Shuaib Yunus has waived all copyright and related or neighboring rights to this work.